免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10783 | 回复: 11
打印 上一主题 下一主题

如何将16进制字符串转换成10进制输出 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-01 16:38 |只看该作者 |倒序浏览
现在在写SNMP接受数据的时候,对方发送过来的数据是以16进制发送过来的,怎样才能将16进制字符串转换成10进制输出???

试过用hex转换,
  1. $Message2=hex($oidvalue)
复制代码

但是打印的Message2的结果是0,不知道有什么办法可以解决???

论坛徽章:
0
2 [报告]
发表于 2007-06-01 16:43 |只看该作者
不清楚SNMP到底是怎麼發送數據的。
$hexstring = '0x12';
$number = oct $hexstring; # $number now is 18

论坛徽章:
0
3 [报告]
发表于 2007-06-01 17:40 |只看该作者

回复 2楼 福瑞哈哥 的帖子

用命令行收到的消息是16进制的,如下:
74 52 E1 E1 0B 34 00 4C 8E E3 00 6C 2C
AF DF 6B
02 00 00 00 28 AF DF 6B CC 8A 00 14 04 04 00 02
03 00 00 00 00 00 FD 00 02 07 05 1F 0E 29 22 01
09 07 05 1F 0E 29 22 01 09 34 28 49 50 3A 31 33
38 30 32 30 34 3B C9 E8 B1 B8 BA C5 3A 34 29 2C
B2 DB CE BB 42 32 2C CD A8 B5 C0 34 3A 32 4D CD
A8 B5 C0 34 20 41 49 53 B8 E6 BE AF 2C B8 E6 BE
AF B2 FA C9 FA 00 12 00 00 00 00 00 C8 05 93

论坛徽章:
0
4 [报告]
发表于 2007-06-01 17:41 |只看该作者
因此我的$oidvalue=“74 52 E1 E1 0B 34 00 4C 8E E3 00 6C 2C
AF DF 6B
02 00 00 00 28 AF DF 6B CC 8A 00 14 04 04 00 02
03 00 00 00 00 00 FD 00 02 07 05 1F 0E 29 22 01
09 07 05 1F 0E 29 22 01 09 34 28 49 50 3A 31 33
38 30 32 30 34 3B C9 E8 B1 B8 BA C5 3A 34 29 2C
B2 DB CE BB 42 32 2C CD A8 B5 C0 34 3A 32 4D CD
A8 B5 C0 34 20 41 49 53 B8 E6 BE AF 2C B8 E6 BE
AF B2 FA C9 FA 00 12 00 00 00 00 00 C8 05 93 ”
怎样可以将以上信息转换成10进制的

论坛徽章:
0
5 [报告]
发表于 2007-06-01 17:44 |只看该作者
怎麼才算是一個整數,上面字符串中几個字母是一個整數?

论坛徽章:
0
6 [报告]
发表于 2007-06-01 17:49 |只看该作者
0B就是十进制的11,也就是两个個字母是一個整數

论坛徽章:
0
7 [报告]
发表于 2007-06-01 17:54 |只看该作者
my @vals = map { oct '0x' . $_ } @{[split /\s+/, $oidvalue]};

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
8 [报告]
发表于 2007-06-01 18:10 |只看该作者
@data = qw(74 52 E1 E1 0B 34 00 4C 8E E3 00 6C 2C
AF DF 6B
02 00 00 00 28 AF DF 6B CC 8A 00 14 04 04 00 02
03 00 00 00 00 00 FD 00 02 07 05 1F 0E 29 22 01
09 07 05 1F 0E 29 22 01 09 34 28 49 50 3A 31 33
38 30 32 30 34 3B C9 E8 B1 B8 BA C5 3A 34 29 2C
B2 DB CE BB 42 32 2C CD A8 B5 C0 34 3A 32 4D CD
A8 B5 C0 34 20 41 49 53 B8 E6 BE AF 2C B8 E6 BE
AF B2 FA C9 FA 00 12 00 00 00 00 00 C8 05 93);
for(@data){
        print hex;
       print "  ";
}


这样行不?

论坛徽章:
0
9 [报告]
发表于 2007-06-01 18:21 |只看该作者
原帖由 FinalBSD 于 2007-6-1 18:10 发表
for(@data){
        print hex;
       print "  ";
}


離害!hex.

论坛徽章:
0
10 [报告]
发表于 2007-06-01 18:30 |只看该作者
但是这样的结果全部是10进制的数字,这段消息中有中文。英文和数字,怎样解析啊???
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP