這可能是一個簡單的問題,但我試圖回顧編碼和字節(我沒有看過一會兒)來實現二進制協議。編碼的十六進制字符串中的字節數
看起來正常字符是1個字節。但是,當你用十六進制編碼它們時,它將字節數減半。
ruby-1.9.2-p180 :001 > "abcd".bytesize
=> 4
ruby-1.9.2-p180 :002 > ["abcd"].pack("H*")
=> "\xAB\xCD"
ruby-1.9.2-p180 :003 > ["abcd"].pack("H*").bytesize
=> 2
我也期待十六進制編碼來與0-9和A-F
有人能幫助澄清這到底是怎麼回事呢?而且,如果你能指出我對一般在線編碼的好的評論,我很樂意提一提。我還沒有看到任何簡單的概述,但這會很棒。
謝謝!
看來你確實解碼而不是編碼以十六進制爲'十六進制abcd'(四個字節)是'171,205'(二字節)十進制。 –
你想做什麼?用十六進制表示每個字符的代碼點? – deceze
一個字符是一個字節。一個十六進制數字[0-9A-F]是一個低位或半個字節。例如,'FF'十六進制是一個字節的最大值。因此,你的發現是預料之中的:一個4字符的字符串是4個字節,而'ABCD'十六進制是兩個字節,'AB'和'CD'。 –