Могу ли я получить размер (длина байта в C) с Perl? - PullRequest
2 голосов
/ 29 декабря 2010

Могу ли я получить sizeof (байтовую длину в C) с помощью Perl?

my $byte_length_in_C_of_int = ...;

редактирование:

perlpacktut / Целые : После первого чтения я подумал, что «sizeof (...)» и «$ Config {... size}» могут отличаться, но после перечитывания места я предполагаю, что $ Config {intsize} дает мой C_int-byte-length.

1 Ответ

6 голосов
/ 29 декабря 2010

Да, но было бы хорошо узнать, для чего это нужно.

Если вы создаете структуру данных для связи с каким-либо другим приложением в двоичном формате, лучше всего выбрать pack - правильная комбинация форматов позволит вам работать практически с любым типом в собственном или специально определенном размере, и он обрабатывает такие вещи, как выравнивание структуры, строки с префиксом длины и TLV.

Для других целей, возможно, вам лучше поискать в Config . Там есть переменные для размеров различных типов, включая intsize, longsize, ptrsize, doublesize, longlongsize (если установлено d_longlong), longdblsize (если d_longdbl set), ivtype / ivsize, nvtype / nvsize (для внутренних числовых типов Perl) и byteorder (чтобы вы могли определить порядковый номер).

...