I need to convert signed int32 number to unsigned using shell script
for example :
convert Input : -256
Expected output: 4294967040
I need to convert signed int32 number to unsigned using shell script
for example :
convert Input : -256
Expected output: 4294967040
this can help you;
#!/bin/bash
input=$1
if [[ $input -lt "0" ]]; then
output=$((4294967296+$input))
else
output=$input
fi
echo $output
#signed int32;
#–2,147,483,648 to 2,147,483,647
#unsigned int32
#0 to 4,294,967,295
Here goes, probably not the quickest, but seems to work
unsigned_to_signed()
{
local hex=$(printf "0x%x" $(( $* )))
local unsigned=$(printf "%u" $hex )
echo $unsigned
}
unsigned_to_signed32()
{
local hex=$(printf "0x%x" $(( $* & 0xFFFFFFFF )))
local unsigned=$(printf "%u" $hex )
echo $unsigned
}
unsigned_to_signed -256
18446744073709551360
unsigned_to_signed32 -256
4294967040