我有以下十六进制地址:2001:0db8:3c4d:0015:0000:0000:abcd:ef12。有8个十六进制数字块,每个块长16位,总共128位。我想将这些块中的每一个转换为二进制,即如果我将第一个块-2001转换为二进制,然后将第二个块-0db8转换为二进制,等等。
同样,我需要遍历每个块,将它们转换为二进制,然后打包。
谁能告诉我实现这一目标的最简单方法?
my $str = '2001:0db8:3c4d:0015:0000:0000:abcd:ef12';
print join "\n", map { unpack ('B*', pack ('H*',$_)) } split ':', $str;
输出:
0010000000000001
0000110110111000
0011110001001101
0000000000010101
0000000000000000
0000000000000000
1010101111001101
1110111100010010
编辑
以下几行是代码中的罪魁祸首。尝试删除它们。
my $tempbin1 = pack( 's', $elements[0]);
my $tempbin2 = pack( 's', $elements[1]);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句