我在增加代表 IPv4 地址的位字符串时遇到问题。字符串看起来像这样"E8 00 00 64"
我想要做的是:当向aSourceAddress
这个字符串添加一个值时,最后一位应该增加,即当添加 5 时,字符串应该看起来像这样"E8 00 00 69"
。但是,当我加 6 时,我得到"E8 00 00 70"
了,我希望得到的是"E8 00 00 6A"
. 逻辑上很简单,我需要将aSourceAddress
变量转换为十六进制并将其添加到 64,但我的输出再次是 70。所以我想我要问的是,我怎样才能得到十六进制的结果。
到目前为止,这有点像我所拥有的。
proc dec2hex {dec_num} {return [format %04X $dec_num]}
set lEndOfAddress {format 0x%x[expr { 0x64 + 0x[dec2hex $aSourceAddress] }]}
set lCompareIpAddr "E8 00 00"
append lCompareIpAddr " $lEndOfAddress"