Bash 将有符号整数转换为无符号whith shell脚本
我需要使用shell脚本将有符号的int32数字转换为无符号的 例如: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
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}$'
)