2012-09-07 42 views
0

我怎么来表达变量六角派喜欢 -红宝石发送字符串变量为十六进制

a='00' 
write("\x#{a}") => 0x00 

尝试包括接收到字符串变量为原始数据的命令字符串,然后传递到COM端口一样 -

cmd="\x45\x#{a}\x01" 
Send(cmd) 

在Ruby

感谢

+0

只要使用'“0x#{a}”'应该可以工作,除非我错过了一些东西......你试过了吗? –

+0

发送“0x#{a}”发送字符串或4个字节“0x00”=> 0x30 0x78 0x30 0x30。希望将字符串“00”转换为0x00 – sbtech

回答

1

String#to_i函数接受一个基本参数,默认为十个 - 但您可以传入十六个参数。这会让你把你想要的数字作为一个数字,而不是一个字符串。从那里,您可以使用Integer#chr函数来获取所需的值 - 一个字符串,其中包含由原始字符串表示的二进制值的字符。

+0

请参阅我上面的注释。问题是我正在接收以字符串格式表示原始数据字节的信息。我必须将这些信息作为原始数据发送。 '00'时,我用-'case a修补它; b =“\ x00”.....;结束;返回b'。丑... – sbtech

+0

@sbtech - 你可以用'chr'函数把它链接起来。例如,在IRB中,''10'.to_i(16).chr'返回'“\ 020”'(控制台以八进制显示,但值正确)。这是你需要的格式吗? –

+0

是的!这就像一个魅力。谢谢。我没有想过八进制,但二进制是二进制的。 – sbtech

相关问题