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.
On 24 June 2013 20:59, Colin L. [email protected] wrote:
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
On 24 June 2013 17:49, John M. [email protected] wrote:
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.
Colin