2013-05-28 56 views
1

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

看起来bc命令不适用于未初始化的数字?

+0

是'18446744070442398140'正确答案? – choroba

+0

bash没有任何叫做'uint64_t'的东西。你的意思是你想要将十六进制字符串转换为十进制字符串吗? –

回答

4

纯bash的答案:

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

我只是C.

编辑做到了: 答案

18446744070442398140 
0

Perl的答案:

perl -Mbigint -le 'print hex FFFFFFFF3D4331BC' 

输出:

18446744070442398140 
1

猛砸答案与bc

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

您也可以将其存储在一个变量是这样的:

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