Bash 将有符号整数转换为无符号whith shell脚本

Bash 将有符号整数转换为无符号whith shell脚本,bash,shell,awk,sh,Bash,Shell,Awk,Sh,我需要使用shell脚本将有符号的int32数字转换为无符号的 例如: convert Input : -256 Expected output: 4294967040 这可以帮助你 #!/bin/bash input=$1 if [[ $input -lt "0" ]]; then output=$((4294967296+$input)) else output=$input fi echo $output #signed int32; #–2,147,483,648

我需要使用shell脚本将有符号的int32数字转换为无符号的

例如:

convert  Input : -256
Expected output: 4294967040
这可以帮助你

#!/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

这可能不是最快的,但似乎有效

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

您尝试了什么?我尝试了类似于负数的方法:SIGNED=-256 UNSIGNED=$((0x
printf'%x'$SIGNED | grep-Eo.{8}$'