2013-05-28 2 views
1

Можно ли преобразовать шестнадцатеричную строку в uint64_t (или unsigned long long int) с помощью сценария bash? Номер FFFFFFFF3D4331BC?преобразовать hex в uint64_t с bash

Похоже, что команда bc не работает с незащищенными номерами?

+0

ли '18446744070442398140' правильный ответ ? – choroba

+0

У bash нет ничего, что называется 'uint64_t'. Вы хотите, чтобы преобразовать шестнадцатеричную строку в десятичную строку? –

ответ

4

Чистый Баш ответ:

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

Я просто сделал это с С.

EDIT: ответ

18446744070442398140 
0

Perl Ответ:

perl -Mbigint -le 'print hex FFFFFFFF3D4331BC' 

Выход:

18446744070442398140 
1

Bash Ответ с bc:

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

Вы также можете сохранить его в переменной, как это:

$ n=FFFFFFFF3D4331BC 
$ echo "ibase=16; $n" | bc 
18446744070442398140 
Смежные вопросы