【问题标题】:Limiting hexadecimal length with gawk用 gawk 限制十六进制长度
【发布时间】:2023-03-06 19:13:02
【问题描述】:

我正在尝试使用 gawk 将负十进制转换为最大长度为 8 的十六进制,如下所示:

echo -1 | awk '{printf "%08X\n", $1}'

在 HP-UX 11.31 机器上,这给了我:

FFFFFFFF

在带有 gawk 的 Linux 机器中,这给了我:

FFFFFFFFFFFFFFFF

有没有办法用gawk限制结果的长度?

谢谢。

【问题讨论】:

  • 这就是 32 位和 64 位计算的区别。您可以使用 {printf "%08X", $1 & 0xFFFFFFFF} 获得 32 位结果。

标签: awk gawk


【解决方案1】:

你总是可以使用 sprintf 然后检查它返回的字符串的长度。

res = sprintf("%08X", $1)
if (length(res) > 8) {
    ...
}

【讨论】:

    猜你喜欢
    • 2013-06-26
    • 2016-08-12
    • 1970-01-01
    • 2011-12-09
    • 2018-07-26
    • 2013-08-09
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    相关资源
    最近更新 更多