Когда вы будете использовать распаковку ('h *'…) или упаковку ('h *'…)?
В Perlpack
а такжеunpack
есть два шаблона для преобразования байтов в / из гекса:
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
.