Когда вы бы использовали unpack ('h *'…) или pack (' h * '…)?

В Perl, pack и 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 ? Ларри, должно быть, подумал, что кто-то может его использовать, иначе он бы не стал его включать.

Вы можете привести реальный пример, где вы? d действительно хотите использовать h вместо H с pack или unpack ? Я ищу конкретный пример; если вы знаете машину, которая организовывала свои байты таким образом, что это было, и можете ли вы дать ссылку на какую-либо документацию по ней?

Я могу вспомнить примеры, где вы могли бы использовать h , например, сериализацию некоторых данных, когда вам все равно, что это за формат, при условии, что вы можете прочитать его обратно, но H будет не менее полезным для этого. Я ищу пример, где h более полезнее, чем H .

11
задан cjm 4 October 2010 в 17:29
поделиться