1

是否可以使用 bash 脚本将十六进制字符串转换为 uint64_t(或 unsigned long long int)?号码是FFFFFFFF3D4331BC

bc命令似乎不适用于未签名的数字?

4

4 回答 4

5

纯 bash 答案:

$ printf "%u\n" "0xFFFFFFFF3D4331BC"
18446744070442398140
于 2013-05-28T15:38:28.307 回答
2
echo "main(){unsigned long long int i = 0xFFFFFFFF3D4331BC; printf(\"%llu\\n\", i);}" | gcc -x c - && ./a.out

我只是用C做的。

编辑:回答

18446744070442398140
于 2013-05-28T15:07:19.527 回答
1

用 bash 回答bc

$ echo "ibase=16; FFFFFFFF3D4331BC" | bc
18446744070442398140

您也可以将其存储在这样的变量中:

$ n=FFFFFFFF3D4331BC
$ echo "ibase=16; $n" | bc
18446744070442398140
于 2013-05-28T15:11:44.463 回答
0

Perl 答案:

perl -Mbigint -le 'print hex FFFFFFFF3D4331BC'

输出:

18446744070442398140
于 2013-05-28T15:08:44.140 回答