Convert hex values to displayable characters


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Convert hex values to displayable characters
# 8  
Old 11-18-2010
Quote:
Originally Posted by Corona688
Ah. Two steps then, hex -> binary, then EBDIC -> ASCII. The first step can be done like this:

Code:
$ echo -e "31\n32\n33\n34" | awk "{ printf \"%c\n\", strtonum(\"0x\" \$0); }"
1
2
3
4
$

This works fine for ASCII, for EBDIC you'd have to pipe it through dd conv=ascii afterwards as in:

Code:
$ echo -e "f0\nf1\nf2" | awk "{ printf \"%c\", strtonum(\"0x\" \$0); }" | dd conv=ascii 2> /dev/null ; echo
012
$

Thanks Corona - I am not able to find the function strtonum in awk. the below error I get.

awk: 0602-553 Function strtonum is not defined. Is that a user defined function?
# 9  
Old 11-18-2010
Blast, that must be a GNU function. Seemed simple enough I hoped it'd be standard. And it'll be a pain to make do without it.

Try nawk or gawk.
# 10  
Old 11-18-2010
have already tried but doesnt seem to work.
# 11  
Old 11-18-2010
You don't have them, or they just don't work?

What does your system have? Perl? C? Pyton?
# 12  
Old 11-18-2010
I mean the gawk is not installed and I get the same error with nawk. there is a c compiler. do you think it might work with c ?
# 13  
Old 11-18-2010
In the GNU awk manual there is strtonum implementation for other awk versions:

Code:
printf '%s\n' f0 f1 f2 | 
  awk '{ 
    printf "%c", mystrtonum("0x" $0) 
    }
func mystrtonum(str,        ret, chars, n, i, k, c)
     {
         if (str ~ /^0[0-7]*$/) {
             # octal
             n = length(str)
             ret = 0
             for (i = 1; i <= n; i++) {
                 c = substr(str, i, 1)
                 if ((k = index("01234567", c)) > 0)
                     k-- # adjust for 1-basing in awk
     
                 ret = ret * 8 + k
             }
         } else if (str ~ /^0[xX][0-9a-fA-f]+/) {
             # hexadecimal
             str = substr(str, 3)    # lop off leading 0x
             n = length(str)
             ret = 0
             for (i = 1; i <= n; i++) {
                 c = substr(str, i, 1)
                 c = tolower(c)
                 if ((k = index("0123456789", c)) > 0)
                     k-- # adjust for 1-basing in awk
                 else if ((k = index("abcdef", c)) > 0)
                     k += 9
     
                 ret = ret * 16 + k
             }
         } else if (str ~ /^[-+]?([0-9]+([.][0-9]*([Ee][0-9]+)?)?|([.][0-9]+([Ee][-+]?[0-9]+)?))$/) {
             # decimal number, possibly floating point
             ret = str + 0
         } else
             ret = "NOT-A-NUMBER"
     
         return ret
     }
' |
  dd conv=ascii 2> /dev/null ; echo

# 14  
Old 11-18-2010
Can't you just use the shell internal printf and echo:

Code:
$ echo -e "f0\nf1\nf2" | while read val do printf "%c" $(echo -e \\x$val); done | dd conv=ascii 2> /dev/null ; echo
012

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to replace with "sed" some hex values by other hex values?

Assume I have a file \usr\home\\somedir\myfile123.txt and I want to replace all occurencies of the two (concatenated) hex values x'AD' x'A0' bytwo other (concatenated) hex values x'20' x'6E' How can I achieve this with the gnu sed tool? Additional question: Is there a way to let sed show... (1 Reply)
Discussion started by: pstein
1 Replies

2. Shell Programming and Scripting

Convert hex to decimal

can someone help me in converting hex streams to decimal values using perl script Hex value: $my_hex_stream="0c07ac14001676"; Every hex value in the above stream should be converted in to decimal and separated by comma. The output should be: 12,07,172,20,00,22,118 (2 Replies)
Discussion started by: Arun_Linux
2 Replies

3. Shell Programming and Scripting

Convert to Hex in perl

Hi, i want to convert number 5860533159 to hexadecimal. i need to use perl. i used $foo = 5860533159; $hexval3 = sprintf("%#x", $foo); i am getting value as 0xffffffff. i need to get value as 0x15D50A3A7. when i converted using google calculator, i got the correct value, expected... (9 Replies)
Discussion started by: asak
9 Replies

4. Shell Programming and Scripting

Convert Hex - KSH

Hello, I woild like to convert hex on KSH not BASH: I tried to use: tmp=31 printf "\x"${tmp}"" it works on bash - Output is '1' but not on ksh. please advice on the right syntax. Thanks. (4 Replies)
Discussion started by: LiorAmitai
4 Replies

5. Shell Programming and Scripting

Convert hex to decimal or reverse is better?

Please Help Me! about the problem down under. I have 2 files with nearly the same characteristics, I have to convert one to the other format or the other format to one's format. I want to write it with awk. The first file contain lines like this: 300000001#A#Y#Y#Y#Y The other file contain... (4 Replies)
Discussion started by: Axel82
4 Replies

6. Shell Programming and Scripting

convert ascii values into ascii characters

Hi gurus, I have a file in unix with ascii values. I need to convert all the ascii values in the file to ascii characters. File contains nearly 20000 records with ascii values. (10 Replies)
Discussion started by: sandeeppvk
10 Replies

7. Programming

Convert HEX to EBCDIC IN C

i want to convert Hex value To EBCDIC value. i tried to convert hex to ascii and then to ebcdic but it doesn't give desired results . it doesn't give corresponding ebcdic value instead it gives some junk values. e.g; Hex EBCDIC ----------------- 81 a 82 b 83 c 84 d 85 e 86 f 87... (6 Replies)
Discussion started by: junaid.nehvi
6 Replies

8. Shell Programming and Scripting

How to Convert Hex value to Dec ?

Hi All, I want to convert below Hex value to Dec value in each column .How to do it ? This data is in a 1 file. 4e20 0475 2710 010f 7530 69a2 7530 7e2f 4e20 02dd 7530 6299 4e20 0c0a 7530 69a2 4e20 0a0b 2710 0048 7530 7955 4e20 0d23 7530 622d 7530 9121 2710 001f 7530 7d3f (6 Replies)
Discussion started by: Nayanajith
6 Replies

9. Programming

to convert int to hex

Hi, Can you help me in converting int value to hex in a single command. Thanks (8 Replies)
Discussion started by: naan
8 Replies

10. UNIX for Dummies Questions & Answers

convert hex to ascii text

Is there a command to convert hex characters into their respective ascii values? (5 Replies)
Discussion started by: dangral
5 Replies
Login or Register to Ask a Question