В Perl pack
и unpack
имеют два шаблона для преобразования байтов в/из hex:
h
Шестнадцатеричная строка (сначала с низким уровнем nybble).h
Шестнадцатеричная строка (сначала с высоким nybble).
Это лучше поясняется с помощью примера:
use 5.010; # so I can use say
my $buf = "\x12\x34\x56\x78";
say unpack('H*', $buf); # prints 12345678
say unpack('h*', $buf); # prints 21436587
Как вы можете видеть, h
- это то, что люди обычно имеют в виду, когда думают о преобразовании байтов в/из шестнадцатеричного. Итак, какова цель h
? Ларри, должно быть, думал, что кто-то может его использовать, или он не стал бы его включать.
Можете ли вы привести пример в реальном мире, где вы действительно хотите использовать h
вместо h
с помощью pack
или unpack
?. Я ищу конкретную пример; если вы знаете о машине, которая организовала свои байты, как это, что это такое, и можете ли вы связать ее с какой-то документацией?
Я могу придумать примеры, где вы могли бы использовать h
, например, сериализацию некоторых данных, когда вам все равно, что это за формат, если вы можете его прочитать, но h
будет таким же, как полезно для этого. Я ищу пример, где h
более полезен, чем h
.