В 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.