I try with this: 0000 0000 1000 0000 0000 0000 0000 0000 (64 bits) to take bytes between the third bytes and the 10th bytes. So I want do a bitwise "&" with 0000 0000 1000 0000 0000 0000 0000 0000 & 0011 1111 1100 0000 0000 0000 0000 0000 to take just this : 00 0000 10
Let's do it:
("00000000100000000000000000000000".to_i(2) & "00111111110000000000000000000000".to_i(2)).to_s(2)
=> "100000000000000000000000"
Which is exactly what is expected! The number shown in the error ("10000000000000000000000000000000000000000000000000000000"
) is 2^56
, which, when using bitwise AND with it and 2^62+2^63
is expected to give you a zero result...
I suggest you check your input again, and trust ruby's &
to do the job...