I have two hex values and expect back the value “3007”
What pack does is take the array of hexes and formats them into a string (if ASCII representation, then ASCII character, otherwise the raw hex as string). Then I take the string of hexes and unpack them, that is, get the unsigned int representation of those bytes:
[0xBF, 0xB].pack(‘C*’).unpack(‘I’)[0]
So I expect back 3007, but the above produces nil.
This is what I want to achieve:
[0xBF, 0xB].reverse.inject { |s,v| s * 256 + v }
=> 3007
But I want to use unpack instead of inject.
Do the operation one step at a time in irb and you will see where it goes wrong.
Colin
I have two hex values and expect back the value "3007"
What pack does is take the array of hexes and formats them into a string (if
ASCII representation, then ASCII character, otherwise the raw hex as
string). Then I take the string of hexes and unpack them, that is, get the
unsigned int representation of those bytes:
[0xBF, 0xB].pack('C*').unpack('I')[0]
So I expect back 3007, but the above produces nil.
Do the operation one step at a time in irb and you will see where it goes wrong.
Hint: unpack('I') appears to expect four bytes.
Colin