Linux shell scripting: hex number to binary string
Solution 1
I used 'bc' command in Linux. (much more complex calculator than converting!)
echo 'ibase=16;obase=2;5f' | bc
ibase parameter is the input base (hexa in this case), and obase the output base (binary).
Hope it helps.
Solution 2
echo "ibase=16; obase=2; 5F" | bc
Solution 3
$ printf '\x5F' | xxd -b | cut -d' ' -f2
01011111
Or
$ dc -e '16i2o5Fp'
1011111
- The
i
command will pop the top of the stack and use it for the input base. Hex
digits must be in upper case to avoid collisions with dc commands and are not limited toA-F
if the input radix is larger than16
.- The
o
command does the same for the output base. - The
p
command will print the top of the stack with a newline after it.
Solution 4
Perl’s printf
already knows binary:
$ perl -e 'printf "%08b\n", 0x5D'
01011101
Solution 5
I wrote https://github.com/tehmoon/cryptocli for those kind of jobs.
Here's an example:
echo -n 5f5f5f5f5f | cryptocli dd -decoders hex -encoders binary_string
Yields:
0101111101011111010111110101111101011111
The opposite also works.
NB: It's not perfect and much work needs to be done but it is working.
srnka
I studied microelectronic on the University which was more focused to embedded development. Micro-controllers, assembler, C, or with embedded Linux OS version. Then my career line slightly changed when I started to work in my second company where I focused more on Java development, object oriented design and python scripting. I like to study and understand all details of languages I use. Also I like to work in team, share information with colleagues, prepare workshops and help to improve cooperation and communication.
Updated on June 05, 2022Comments
-
srnka almost 2 years
I am looking for some easy way in shell script for converting hex number into sequence of 0 and 1 characters.
Example:
5F -> "01011111"
Is there any command or easy method for accomplish it or should I write some switch for it?