1
如何在ruby中對字符串執行按位操作? 我想做bitwise &
一個4字節的字符串,長度爲4個字節,例如("abcd" & 0xDA2DFFD3)
。我無法獲取字符串的字節值。謝謝你的幫助。ruby字符串按位操作
如何在ruby中對字符串執行按位操作? 我想做bitwise &
一個4字節的字符串,長度爲4個字節,例如("abcd" & 0xDA2DFFD3)
。我無法獲取字符串的字節值。謝謝你的幫助。ruby字符串按位操作
如果您總是使用4字節字符串進行操作,則參數爲'V'
的String#unpack
將按小尾數字節順序將四個字節視爲無符號長整型。使用'N'
將強制網絡字節順序,並使用'L'
將使用本機順序。需要注意的是unpack
總是返回數組,因此有必要採取索引0
>> '0x%X' % ('abcd'.unpack('V')[0] & 0xDA2DFFD3)
=> "0x40216241"
如果它並不總是四個字節,你可以調用String#bytes
得到字符串的字節數,然後你可以使用Enumerable#inject
積累將字節轉換爲數字。
>> "abcd".bytes.inject {|x, y| (x << 8) | y}
=> 1633837924
>> "abcd".bytes.inject {|x, y| (x << 8) | y}.to_s(16)
=> "61626364"
>> "abcd".bytes.inject {|x, y| (x << 8) | y} & 0xDA2DFFD3
=> 1075864384
>> "0x%X" % ("abcd".bytes.inject {|x, y| (x << 8) | y} & 0xDA2DFFD3)
=> "0x40206340"
只要您使用ASCII字符串,這是「安全」的。如果你開始使用多字節字符串,你會得到「奇怪」的結果。
正是我所需要的。謝謝。 – artsince 2010-05-02 23:05:34