Обновление: Сальва правильно указывает, что я ошибался насчет введения шаблона пакета "Q".Это модификатор ">", который не возвращается к 5.8.
Perl 5.10 представил модификатор pack () ">", который, для моего случая использования с "Q", упаковывает беззнаковый квад (64 бита)значение в big endian .
Теперь я ищу эффективный эквивалент для
pack("Q>2", @ints)
, где @ints содержит два 64-битных целых числа без знака.«Q> 2» означает «упаковать два беззнаковых квадра в порядке байтов с прямым порядком байтов».Очевидно, я хочу этого, потому что я (по крайней мере временно) привязан к Perl до 5.10.
Update2: На самом деле, при дальнейшем рассмотрении, что-то простое, как должно сделать следующее:
pack("N4", $ints[0] >> 32, $ints[0], $ints[1] >> 32, $ints[1])
Похоже, работает на моем 64-битном Linux x86-64.Любая причина, почему это может не совпадать с pack("Q>2", @ints)
?Какие-нибудь вопросы, относящиеся к платформе?
Что наоборот (то есть эквивалентно распаковке ("Q> 2", @ints))?