Почему эта строка возвращает сумму целых чисел 1-10? - PullRequest
0 голосов
/ 31 декабря 2018

Я хотел бы понять, как unpack возвращает сумму в заданной однострочной строке perl.

Я посмотрел pack справочную страницу и в основном понял, что это просто форматированиеданный массив в scalar из ten удваивается.

Однако я не смог найти подходящую документацию для unpack с %123.Нужна помощь здесь.

print unpack "%123d*" , pack( "d*", (1..10));

Эта строка корректно выводит 55, что 1+2+3+...+10.

1 Ответ

0 голосов
/ 31 декабря 2018

С perldoc -f распаковать :

В дополнение к полям, разрешенным в pack (), вы можете добавить в поле префикс с%, чтобы указать, что вы хотите -битная контрольная сумма элементов вместо самих элементов.

Таким образом, %123d* означает добавление всех входных целых чисел 1..10 и затем получение первых 123 битов этого результата для построения " -битная контрольная сумма" .Обратите внимание, что %8d* или просто %d* (что эквивалентно %16d*) тоже будет достаточно, если сумма достаточно мала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...