Text conversion, binary digits -> hex (or decimal)
5,045
Solution 1
Here a snippet of bash scripting to do that
while read line; do
n=$((2#${line// /}))
printf '0x%02X\n' "$n"
done <input-file
where 2#
means base 2 and ${var// /}
means "remove all spaces"
Solution 2
With awk:
awk '{d=0; for (i=1; i<=NF; i++) {d=(d*2)+$i} printf "0x%02x\n", d}' binary.txt
Or with bc:
(echo obase=16; ibase=2; sed 's/ //g' binary.txt) | bc
Solution 3
With Perl:
perl -ne 's/ *//g; printf("0x%02x\n", eval("0b$_"))' somefile.txt
Related videos on Youtube
Author by
nos
Updated on September 18, 2022Comments
-
nos over 1 year
I have a huge text file with digits representing an 8 bit value in binary. I want to convert these to hexadecimal (or decimal, doesn't really matter). That is, I have a text file containing e.g.
0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1
(just 8 bits) and I'd want to convert this to, say,
0x0d 0x39 0x45 0x1d
It sounds like this could be done with an awk script/vim macro, or a combination of any other tools.