使用bash将hex转换为uint64_t

时间:2013-05-28 14:56:36

标签: bash

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

似乎bc命令不适用于未加号的数字?

4 个答案:

答案 0 :(得分:4)

Pure bash回答:

$ printf "%u\n" "0xFFFFFFFF3D4331BC"
18446744070442398140

答案 1 :(得分:2)

echo "main(){unsigned long long int i = 0xFFFFFFFF3D4331BC; printf(\"%llu\\n\", i);}" | gcc -x c - && ./a.out

我刚用C做过。

编辑: 答案

18446744070442398140

答案 2 :(得分:1)

使用bc打击答案:

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

您也可以将其存储在如下变量中:

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

答案 3 :(得分:0)

Perl回答:

perl -Mbigint -le 'print hex FFFFFFFF3D4331BC'

输出:

18446744070442398140