There are two ways to pack the bytes in a 16-bit integer:
(Wikipedia The diagrams on the right part way down are clearest explanation to me.)
Update: Switched the descriptions around per proceng++ post below.
- Big-endian.
Here, the bits of the low-value byte are stored in the byte of the target location with the highest address
You can do this is perl using my $BEbin = pack 'n', 1263;
- Little-endian
Here, the bits of the low-value byte are stored in the byte of the target location with the lowest address.
You can do this is perl using my $LEbin = pack 'v', 1263;
There are also two ways of unpacking the bits of either representation:
- Least significant bit (lsb) first, progressing to most significant bit (msb).
print unpack 'b16', $bin
- msb first progressing to lsb.
print npack 'B16', $bin;
The result is 4 different ways of displaying the binary representation of a 16-bit number. By the example you gave, it would appear to be the last of those below that you are after:
print unpack 'B16', pack 'v', 1263;;
1110111100000100
print unpack 'B16', pack 'n', 1263;;
0000010011101111
print unpack 'b16', pack 'v', 1263;;
1111011100100000
print unpack 'b16', pack 'n', 1263;;
0010000011110111
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
| [reply] [Watch: Dir/Any] [d/l] [select] |
| [reply] [Watch: Dir/Any] |
| [reply] [Watch: Dir/Any] |
my $uint16 = pack 'n', 1263; # "\x12\x63"
Or if you're asking for the binary representation of the number,
my $bin = unpack 'B16', pack 'n', 1263; # "0000010011101111"
| [reply] [Watch: Dir/Any] [d/l] [select] |
(s)printf won't do exaxtly what you asked for by itself, since you appear to have reversed the order of the bits in each byte. Assuming that's just an error in entering the question,
$ perl -e 'printf "%016b\n", 1263'
0000010011101111
converts the integer to a 16-bit binary representation. If you actually do want to reverse the bits in each byte, split or substr and reverse should provide ways to rearrange their order. | [reply] [Watch: Dir/Any] [d/l] [select] |