2012-09-07 72 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

相關問題