0
OK,最後從我的問題 - 假設我有以下數據結構:寫入特定的數據類型來管在Ruby中
byte length
byte message_code
byte[] payload
它是每個數據位是它的正確的數據類型時非常重要寫在管道上;我怎麼能保證我的數據數組(在Ruby中是這樣):
data = [ 15, 0, .... ] # the ... indicates the payload
被寫成單個字節 - 即,15寫爲一個字節,而不是兩個字符(即「1」和'5')?
目前,我的數據正在被轉換爲一個字符串,然後寫入,這意味着15不是寫成15,而是'1'和'5'的單個字符。這意味着,在管道,它提出這樣的:
"1, 5, 0, 4, 1, 2, 1, 0, 4" (notice that the 1 is an individual character instead of being a part of 15)
,而不是
150412104 (etc)
得益於開放的阿加西,我完成的代碼如下所示:
data = [ 15, # message code + payload size
0, # message code
4, # protocol version
12, # size of string
]
data.concat('hello, world'.bytes.to_a)
p data
packed_data = data.pack 'c*' # Convert the data into a string containing 8-bit unsigned characters
請你能發佈一個清晰的輸入例子和相應的預期輸出嗎? – toro2k
已經做了 - 輸入是15,0,4,12,104(每個逗號分隔表示一個新的字節),但輸出是'1,5,0,4,1,2,1,0,4' –
輸入是一個數組,即'[15,0,4,12,104]',還是一個字符串?對於此輸入,您期望的輸出是「1,5,0,4,1,2,1,0,4」,「15,0,4,12,104」或「150412104」? – toro2k