Problems converting decimal to ASCII and back to decimal


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Problems converting decimal to ASCII and back to decimal
# 1  
Old 04-28-2020
Problems converting decimal to ASCII and back to decimal

Hi,
i have this function to get the ASCII of a decimal
Code:
function chr() {
  printf "\\$(printf '%03o' "$1")";
  return 0;
}

and this one to get the decimal back
Code:
function ord()
{
  printf '%d' "'$1";
  return 0;
}

but i can't get these to work for decimal 10 which is the NL line feed, new line char
Code:
ord "$(chr 10)"

gives me 0 (zero).

Any help, please?
# 2  
Old 04-28-2020
Your code works for me:
Code:
[~] 0 $ type ord ; type chr
ord ist eine Funktion.
ord () 
{ 
    printf '%d' "'$1";
    return 0
}
chr ist eine Funktion.
chr () 
{ 
    printf "\\$(printf '%03o' "$1")";
    return 0
}
[~] 0 $  ord $(chr 97)
97[~] 0 $

EDIT:
Letters do not start at 0 or 1... but much later Smilie
# 3  
Old 04-28-2020
Yes 97 works, but not 10.
The problem is that the $( ) (likewise the ` `) strips a trailing newline; this is mostly for convenience.
Code:
x="
"; echo ${#x}
1
x=$(echo "
"); echo ${#x}
0

--- Post updated at 15:54 ---

A stackoverflow article mentions a work-around. But the extra read options are likely not portable
Code:
IFS= read -r -n 1 -d '' x < <(chr 10)
echo ${#x}
1
ord "$x"
10

# 4  
Old 04-29-2020
Hi
There is Dynamic Extensions in gnu awk
Code:
awk -lordchr 'BEGIN {print ord(chr(10))}'

# 5  
Old 04-29-2020
Not sure if this is what you re after but fully POSIX compliant:-
Longhand OSX 10.14.3, default bash terminal calling dash.
Code:
Last login: Wed Apr 29 21:46:11 on ttys000
AMIGA:amiga~> dash
AMIGA:\u\w> ord()
> {
>     printf "%u\n" "'${1}"        
> }
AMIGA:\u\w> ord "
> "
10
AMIGA:\u\w> exit
AMIGA:amiga~> _

This User Gave Thanks to wisecracker For This Post:
# 6  
Old 04-30-2020
A workaround POSIX shell compliant.
Code:
#!/bin/sh

# #!/usr/local/bin/dash
# newline.sh

printf "\nA test.\n\n" > /tmp/nl

for subscript in 0 1 2 3 4 5 6 7 8 9
do
    nl=$( hexdump -n1 -s${subscript} -v -e '1/1 "%04o"' < /tmp/nl )
    printf "%u\n" "${nl}"
done

I'll leave you to create the function...
OSX 10.14.3, default bash terminal calling 'sh' or 'dash'...
Code:
Last login: Thu Apr 30 16:16:02 on ttys000
AMIGA:amiga~> cd Desktop/Code/Shell
AMIGA:amiga~/Desktop/Code/Shell> ./newline.sh
10
101
32
164
145
163
164
46
10
10
AMIGA:amiga~/Desktop/Code/Shell> _

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Urgent help needed.. C++ program to convert decimal to hexa decimal

Hi , seq can be 0...128 int windex = seq / 8; int bindex = seq % 8; unsigned char bitvalue = '\x01' << (7-bindex) ; bpv.bitmapvalue = bitvalue; This is the part of a program to convert decimal to bitmap value of hexadecimal. I want this to change to convert only to... (1 Reply)
Discussion started by: greenworld123
1 Replies

2. Shell Programming and Scripting

Converting decimal to hex

How to convert decimal value to hex and than take 1st digits as variable sample data 84844294,5,6 51291736,2,3 84844294,5,6 51291736,2,3 i can use {printf "%x,%d\n",$1,$2} but than i want to filter base on 1st hex digit 1st recrd (1 Reply)
Discussion started by: before4
1 Replies

3. Shell Programming and Scripting

Converting string to negative decimal value

I need code for converting a string to a negative decimal value. For ex, i have the value in the form of a string (5489.95-) i need to convert it into decimal value (-5489.95) while getting output using printf command. i know how to get as a string a="5489.95-" printf "%10s"$a >>xyz.dat ... (5 Replies)
Discussion started by: angie1234
5 Replies

4. Shell Programming and Scripting

Converting hex to ascii/decimal

I am writing a bash script to do some parsing on a log and I am running into a problem when it comes to converting only certain sections of the file from hex to ascii or hex to decimal. Data Example: The hex values after Hardware and SW Version I need to convert from Hex to ASCII and the... (16 Replies)
Discussion started by: Shiftkey
16 Replies

5. Shell Programming and Scripting

Converting decimal to integer

The shell mentioned below will show a warning if the page takes more than 6 seconds to load. The problem is that myduration variable is not an integer. How do I convert it to integer? myduration=$(curl http://192.168.50.1/mantisbt/view.php?id=1 -w %{time_total}) > /dev/null ; ] && echo... (3 Replies)
Discussion started by: shantanuo
3 Replies

6. Shell Programming and Scripting

need help with ascii to decimal conversion

Hi, Can anyone please help me ascci to decimal conversion in bash I have a file which contains stream of numbers like this,these are ascci values 729711810132973278105991013268971213233 I want to covert it to its actual value like upper code's decimal is "Have a Nice Day!" ... (15 Replies)
Discussion started by: sunilmenhdiratt
15 Replies

7. Shell Programming and Scripting

how to convert data from ASCII to Packed Decimal

Hi All, Please let me know if it is possible to convert data from ASCII to Packed Decimal through Unix? Basically we have ASCII file with numeric data we want to convert that files data to Packed decimal format to send it to main frame. Please let me know if we can do it through unix script.... (1 Reply)
Discussion started by: aloktiwary
1 Replies

8. Shell Programming and Scripting

converting decimal in other systems with bc

Hallo, how can I convert number systems with bc? I need to convert a decimal number to octal, dual or hex number... (2 Replies)
Discussion started by: wiseguy
2 Replies

9. UNIX for Advanced & Expert Users

Converting Binary decimal coded values to Ascii Values

Hi All, Is there any command which can convert binary decimal coded values to ascii values... i have bcd values like below оооооооооооо0о-- -v - Pls suggest a way to convert this. Thanks, Deepti.Gaur (3 Replies)
Discussion started by: gaur.deepti
3 Replies

10. Shell Programming and Scripting

Converting a decimal into integer

Hi all, I'm trying to convert a decimal number into an integer number; I'm doing this: n=`echo |awk '{ print "'"$mem"'"*10}'` where the variable mem is equal to 3.7 I'd like to obtain 37, but the expression above gives me 30. Help please!!!! thx a lot (4 Replies)
Discussion started by: idro
4 Replies
Login or Register to Ask a Question