TCL:如何将十六进制值转换为有符号整数?

时间:2019-11-21 12:08:25

标签: hex tcl decimal data-conversion

此命令假定十六进制表示无符号值:

set q 0xffffb764
set r [expr $q]
puts $r

是否有一种简单的方法可以使q代表有符号值而不是无符号值?

2 个答案:

答案 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