此命令假定十六进制表示无符号值:
set q 0xffffb764
set r [expr $q]
puts $r
是否有一种简单的方法可以使q代表有符号值而不是无符号值?
答案 0 :(得分:0)
这是我的解决方案:
proc hex_to_signed {value} {
set sign [expr {($value & 0b10000000000000000000000000000000)}]
set mag [expr {($value & 0b01111111111111111111111111111111)}]
if {$sign==0} {
set exp 0
} else {
set exp [expr -2**31]
}
set value [expr {$exp + $mag}]
return $value
}
答案 1 :(得分:0)
另一种使用格式的解决方案
set q 0xffffb764
set r [format "%d" $q]
puts $r