Можно ли преобразовать шестнадцатеричную строку в uint64_t (или unsigned long long int) с помощью сценария bash? Номер FFFFFFFF3D4331BC
?преобразовать hex в uint64_t с bash
Похоже, что команда bc
не работает с незащищенными номерами?
Можно ли преобразовать шестнадцатеричную строку в uint64_t (или unsigned long long int) с помощью сценария bash? Номер FFFFFFFF3D4331BC
?преобразовать hex в uint64_t с bash
Похоже, что команда bc
не работает с незащищенными номерами?
Чистый Баш ответ:
$ printf "%u\n" "0xFFFFFFFF3D4331BC"
18446744070442398140
echo "main(){unsigned long long int i = 0xFFFFFFFF3D4331BC; printf(\"%llu\\n\", i);}" | gcc -x c - && ./a.out
Я просто сделал это с С.
EDIT: ответ
18446744070442398140
Perl Ответ:
perl -Mbigint -le 'print hex FFFFFFFF3D4331BC'
Выход:
18446744070442398140
Bash Ответ с bc
:
$ echo "ibase=16; FFFFFFFF3D4331BC" | bc
18446744070442398140
Вы также можете сохранить его в переменной, как это:
$ n=FFFFFFFF3D4331BC
$ echo "ibase=16; $n" | bc
18446744070442398140
ли '18446744070442398140' правильный ответ ? – choroba
У bash нет ничего, что называется 'uint64_t'. Вы хотите, чтобы преобразовать шестнадцатеричную строку в десятичную строку? –