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
Share:
5,045

Related videos on Youtube

nos
Author by

nos

Updated on September 18, 2022

Comments

  • nos
    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.