gpt4 book ai didi

bash - Bash 中的十六进制到十进制

转载 作者:行者123 更新时间:2023-12-05 09:09:40 28 4
gpt4 key购买 nike

我知道我们可以在 bash 中使用将十六进制转换为十进制

#!/bin/bash
echo "Type a hex number"
read hexNum
echo $(( 16#$hexNum ))

但是当我用 hexNum=9b4bbba36e494bcd 运行它时,它会给我 -7256500063973061683 即负值,它是 2 的补码。

我不想要它的 2 补码。我希望 hexNum=9b4bbba36e494bcd 的输出为 11190244009736489933。正如在 https://www.rapidtables.com/convert/number/hex-to-decimal.html?x=9b4bbba36e494bcd 上给出的那样

如何使用 bash 获得此输出?请帮忙!

最佳答案

正如评论中所指出的,您示例中的数字太大了。 bash 使用固定大小的整数进行计算。大数字会溢出。

bc 支持任意大数,也可以进行基数转换。但是,bc 要求十六进制数字以大写形式书写,因此您必须先转换输入。 bash 有一个内置的参数替换来转换为大写:

hex=9b4bbba36e494bcd
echo "ibase=16; ${hex^^}" | bc

关于bash - Bash 中的十六进制到十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62221351/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com