BASH из двоичного кода в шестнадцатеричный, чтобы соответствовать функции PHP bin2hex?

Я устранил ошибку об отсутствующем read-package-json.jsс помощью последнего сценария установки изhttps://raw.githubusercontent.com/npm/npm/latest/scripts/install.sh. (Источник:https://github.com/npm/npm/issues/18524#issuecomment-385369514).

После этого вы можете столкнуться с ошибкой об отсутствии rimraf. По крайней мере, для этого есть пакет Debian Stretch :apt install node-rimraf. Альтернативы см. вhttps://github.com/npm/npm/issues/18524и https://github.com/npm/npm/issues/19105.

Наконец, вы можете столкнуться с ошибкой об отсутствии make, если она еще не установлена, поэтому apt install make.

0
07.05.2020, 11:16
3 ответа

Если у вас есть hexdumpзавалявшиеся:

$ printf "%s" "$testKey" | hexdump -ve '/1 "%x"'
38373938282a2639387d3925225e38265d385f39387b393739382a2a3736383736

-eзадает строку формата для hexdump, которая «должна быть заключена в двойные кавычки (" )метки». /1использует по одному байту за раз для строки формата %x, которая печатает ее. в шестнадцатеричном формате (, в противном случае порядок байтов может привести к другому результату ).-v— заставить его также печатать повторяющиеся данные (по умолчанию — заменить их на*).

4
28.04.2021, 23:16

Да, с xxdможно сделать то же самое:

testKey='8798(*&98}9%"^8&]8_98{9798**76876'
testHex=$(echo -n "${testKey}" | xxd -p -c 100)

Флаг -p предназначен для шестнадцатеричного дампа без информации о смещении.
Флаг -c 100 предназначен для строки -длиной 100 символов (по умолчанию 16, макс. 256 ).

2
28.04.2021, 23:16

С «просто bash», используя трюк из BASH print question (printf \$ (printf '%03o' $1))

$ for ((i=0;i<${#testKey};i++)); do printf '%x' "$(printf "'%c" "${testKey:i:1}")"; done; echo
38373938282a2639387d3925225e38265d385f39387b393739382a2a3736383736

С перломunpack

$ perl -E 'say unpack "H*", $ARGV[0]' "$testKey"
38373938282a2639387d3925225e38265d385f39387b393739382a2a3736383736
0
28.04.2021, 23:16

Теги

Похожие вопросы