1
我在增加表示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"
+1雖然我會期望一個'$ aSourceAddress = 6'的例子。最後一點,不妨使用'string toupper'將'6a'改爲'6A'。 – Jerry
@Jerry - 好點。編輯和reran代碼只是爲了確保。謝謝。 –
使用'%02X'(大寫字母)可以使'format'產生正確的輸出,而不需要額外的'string toupper'。 –