gpt4 book ai didi

perl - 了解打包/解包 perl

转载 作者:行者123 更新时间:2023-12-02 21:07:30 25 4
gpt4 key购买 nike

所以我知道有一些库可以为我做到这一点,但我想学习打包/解包。

我的目标是让用户输入 IP 地址/子网掩码,然后验证其是否有效。

我想到的一种方法是“sprintf”并获得一个二进制值,比如说 192.168.1.1 。这是一个不错的解决方案,但是我需要在前面添加所需数量的 0,使其成为“8 位”

pack 可以将内容以二进制格式存储时,这似乎是很多不必要的工作。我使用了我找到的 N 模板 http://perldoc.perl.org/functions/pack.html我的第一个目标是获取 IP 地址,将其转换为二进制,然后再转换回来。

$ip = "192.168.1.1";    
$bi = pack ("N*", $ip);
print unpack("N*",$bi),"\n";

我得到的输出是192,所以显然我不明白这里发生了什么。

这里到底发生了什么?

最佳答案

pack ("N*", $ip) 从 $ip 中取出一个整数并将其放入网络字节顺序。

您想要的是将 IP 地址的 4 个十进制八位字节打包为二进制。无需摆弄字节序,因为 IP 地址字符串已经采用大字节序(最高位字节已经位于字符串的开头)。

我还将 * 更改为 4,IP 地址始终为 4 个八位字节长:

$ip = "192.168.1.1";    
$bi = pack "C4", split('\.', $ip);
print join('.', unpack("C4",$bi)), "\n";

关于perl - 了解打包/解包 perl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35332535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com