我需要使用shell脚本将签名的int32号转换为unsigned
例如:
convert Input : -256
Expected output: 4294967040
答案 0 :(得分:3)
这可以帮到你;
#!/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
答案 1 :(得分:1)
在这里,可能不是最快的,但似乎有效
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