У меня проблема с увеличением строки битов, которая представляет адрес IPv4. Строка выглядит так: "E8 00 00 64"
То, что я пытаюсь сделать, заключается в следующем: при добавлении к этой строке значения aSourceAddress
, последний бит должен быть увеличен, т. Е. При добавлении 5 строка должна выглядеть так: "E8 00 00 69"
. Однако, когда я добавляю 6, я получаю "E8 00 00 70"
, и то, что я надеюсь получить, это "E8 00 00 6A"
. Логично это просто, мне нужно преобразовать переменную aSourceAddress
в hex и добавить ее в 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 - Отличные очки. Отредактированный и повторный код, чтобы убедиться. Благодарю. –
Использование '% 02X' (с заглавной буквой) делает' format' выдает правильный вывод без дополнительной строки 'string toupper'. –