perl - Perl - 将 IPv4 地址转换为十六进制
问题描述
我正在尝试编写一个 perl 脚本,要求用户输入他们的 ipv4 地址并将其转换为十六进制。例如,用户输入“130.130.68.1”将返回“0x82.0x82.0x44.0x01”。我怎样才能做到这一点?
解决方案
0x82.0x82.0x44.0x01
:
my $hex =
join ".",
map { sprintf "0x%02X", $_ }
split /\./,
$ip;
或者
my $hex = $ip =~ s/[^.]+/ sprintf "0x%02X", $& /reg;
也就是说,写 82822601 160x82.0x82.0x44.0x01
是一种非常奇怪的方式,32 位数字表示。130.130.68.1
0x82824401
:
use Socket qw( inet_aton );
my $hex = '0x' . unpack('H*', inet_aton('130.130.68.1'));
0x82.82.44.01
:
use Socket qw( inet_aton );
my $hex = '0x' . join('.', unpack('(H2)*', inet_aton('130.130.68.1')));
这两者也都带有域名。
推荐阅读
- javascript - 无法在 React 中使用百分比设置高度
- pandas - Panada groupby,然后应用函数来比较连续值(从下到上)以增加,要创建的新列说明真/假
- python - 未找到 Jupyter Notebook 内核错误 win32api
- python - /review/1 __init__() 处的 TypeError 得到了意外的关键字参数“id”。我正在创建一个在线图书买卖项目
- sockets - UDP 客户端工作,但没有收到来自客户端的响应
- php - 如何使用正则表达式获取价格值
- django - 我正在尝试在 django 中注册用户,但表单字段未显示。我的代码有什么问题?
- vba - 按日期测量收到 Outlook 电子邮件和回复之间的响应时间:从电子邮件返回 PR_RECEIVED_BY_ENTRYID 时出错
- python - django中不同模型的通用视图
- python - 检查两个 pyomo 表达式是否相同