如何在Ruby中将十六进制strign转换为32位signed int当量?例如
a = "fb6d8cf1" #hex string
[a].pack('H*').unpack('l') #from the documentation it unpacks to its 32 bit signed int
Run Code Online (Sandbox Code Playgroud)
它转换为
-242455045
Run Code Online (Sandbox Code Playgroud)
但实际的答案是
-76706575
Run Code Online (Sandbox Code Playgroud)
你能指出我做错了什么吗?
您可以自己翻转字节来解决字节序和符号问题:
>> ['fb6d8cf1'.scan(/[0-9a-f]{2}/i).reverse.join].pack('H*').unpack('l')
=> [-76706575]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5459 次 |
| 最近记录: |