在Perl中解码4个无符号字符中的32位无符号整数
Decoding 32bit unsigned int in 4 unsigned char in Perl
我必须在二进制文件中写入这些十六进制值:
my $erase_start = 0x00010000;
my $erase_size = 0x00008000;
这是预期的结果
正在使用
print WRITEHANDLE sprintf('%08X', $erase_start);
print WRITEHANDLE sprintf('%08X', $erase_size);
我得到
我正在查看 pack/unpack 功能,但我不是 Perl 大师。
您想将这些 32 位无符号整数写入二进制文件。所以我猜你想要这样的东西:
open my $fh, ">", "file.dta" or die;
binmode($fh);
print $fh pack("N*", 0x00010000, 0x00008000); #one or more u32 values
close($fh);
sprintf %X
生成十六进制,它是数字的 text 表示。这不是你想要的。
您想将数字输出为大端 32 位整数。为此,您可以使用
pack('N*', $erase_start, $erase_size)
或
pack('L>*', $erase_start, $erase_size)
我必须在二进制文件中写入这些十六进制值:
my $erase_start = 0x00010000;
my $erase_size = 0x00008000;
这是预期的结果
正在使用
print WRITEHANDLE sprintf('%08X', $erase_start);
print WRITEHANDLE sprintf('%08X', $erase_size);
我得到
我正在查看 pack/unpack 功能,但我不是 Perl 大师。
您想将这些 32 位无符号整数写入二进制文件。所以我猜你想要这样的东西:
open my $fh, ">", "file.dta" or die;
binmode($fh);
print $fh pack("N*", 0x00010000, 0x00008000); #one or more u32 values
close($fh);
sprintf %X
生成十六进制,它是数字的 text 表示。这不是你想要的。
您想将数字输出为大端 32 位整数。为此,您可以使用
pack('N*', $erase_start, $erase_size)
或
pack('L>*', $erase_start, $erase_size)