2005年08月02日 星期二 21:57
纯粹的十六进制字符串如何转换成十六进制数, 如"AB0123" 转换成十六进制数AB0123(即0xAB, 0x01, 0x23) 谢谢 __________________________________________________ 赶快注册雅虎超大容量免费邮箱? http://cn.mail.yahoo.com -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050802/caa08432/attachment.htm
2005年08月02日 星期二 22:04
On 8/2/05, 泰传 温 <wendwghit at yahoo.com.cn> wrote: > 纯粹的十六进制字符串如何转换成十六进制数, > 如"AB0123" 转换成十六进制数AB0123(即0xAB, 0x01, 0x23) > 谢谢 .>>> int('AB0123', 16) 11206947 .>>> '%x' % 11206947 'ab0123' -- Qiangning Hong I'm usually annoyed by IDEs because, for instance, they don't use VIM as an editor. Since I'm hooked to that, all IDEs I've used so far have failed to impress me. -- Sybren Stuvel @ c.l.python Get Firefox! <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>
2005年08月02日 星期二 22:12
在 05-8-2,泰传 温<wendwghit at yahoo.com.cn> 写道: > 纯粹的十六进制字符串如何转换成十六进制数, > 如"AB0123" 转换成十六进制数AB0123(即0xAB, 0x01, 0x23) > 谢谢 from string import atoi atoi('0xAB0123', 0x) py->>> atoi('0xAB0123', 0x) 11206947 -- I'm the one, powered by nEO
2005年08月02日 星期二 22:52
不仅仅这样, 而是一串特别特别长的十六进制字符串,其实就是网络数据流了, 如何转换成十六进制数, 即每两个字符是一个十六进制数, 即 “01”表示 0x01 "nEO (a.k.a. gentoo.cn)" <gentoo.cn at gmail.com> 写道:在 05-8-2,泰传 温 写道: > 纯粹的十六进制字符串如何转换成十六进制数, > 如"AB0123" 转换成十六进制数AB0123(即0xAB, 0x01, 0x23) > 谢谢 from string import atoi atoi('0xAB0123', 0x) py->>> atoi('0xAB0123', 0x) 11206947 -- I'm the one, powered by nEO _______________________________________________ python-chinese list python-chinese at lists.python.cn http://python.cn/mailman/listinfo/python-chinese __________________________________________________ 赶快注册雅虎超大容量免费邮箱? http://cn.mail.yahoo.com -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050802/4a196183/attachment.htm
2005年08月02日 星期二 23:09
我想你应该把这个长长的数据流分段进行转换,利用readline或者从缓冲区内读取一段 转换一段。 没研究过这个,不过可以把你的想法告诉大家,是准备做什么用的呢? -----Original Message----- From: python-chinese-bounces at lists.python.cn [mailto:python-chinese-bounces at lists.python.cn]On Behalf Of 泰传 温 Sent: 2005年8月2日 22:53 To: nEO (a.k.a. gentoo.cn); python-chinese at lists.python.cn Subject: 回复: Re: [python-chinese] 问一个比较简单的问题, 数制转换 不仅仅这样, 而是一串特别特别长的十六进制字符串,其实就是网络数据流了, 如 何转换成十六进制数, 即每两个字符是一个十六进制数, 即 “01”表示 0x01 "nEO (a.k.a. gentoo.cn)" <gentoo.cn at gmail.com> 写道: 在 05-8-2,泰传 温 写道: > 纯粹的十六进制字符串如何转换成十六进制数, > 如"AB0123" 转换成十六进制数AB0123(即0xAB, 0x01, 0x23) > 谢谢 from string import atoi atoi('0xAB0123', 0x) py->>> atoi('0xAB0123', 0x) 11206947 -- I'm the one, powered by nEO _______________________________________________ python-chinese list python-chinese at lists.python.cn http://python.cn/mailman/listinfo/python-chinese __________________________________________________ 赶快注册雅虎超大容量免费邮箱? http://cn.mail.yahoo.com -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050802/ec39d0e9/attachment.htm
2005年08月02日 星期二 23:14
[标题怎么变成乱码了?改回原来的标题了。] On 8/2/05, 泰传 温 <wendwghit at yahoo.com.cn> wrote: > "nEO (a.k.a. gentoo.cn)" <gentoo.cn at gmail.com> 写道: > > from string import atoi > > atoi('0xAB0123', 0x) > > > py->>> atoi('0xAB0123', 0x) > > 11206947 在Python3000里string模块会被取消,还是用int来转换更加pythonic一些。 > 不仅仅这样, 而是一串特别特别长的十六进制字符串,其实就是网络数据流了, 如何转换成十六进制数, 即每两个字符是一个十六进制数, 即 "01"表示 > 0x01 > 你想把一长串十六进制字符串变成一个数?那得要能表示的下才行。 .>>> int('A'*100, 16) 17214999187246057264372794480020079162198038618861490085537729043604317480112274 63086430235520091887623935447981831662250L .>>> int('A'*10000000000, 16) Traceback (most recent call last): File "", line 1, in ? OverflowError: long int too large to convert to int -- Qiangning Hong I'm usually annoyed by IDEs because, for instance, they don't use VIM as an editor. Since I'm hooked to that, all IDEs I've used so far have failed to impress me. -- Sybren Stuvel @ c.l.python Get Firefox! <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>
2005年08月02日 星期二 23:19
其实就是两个节点之间通过TCP/IP在传递数据,而这些数据是有格式的,所以想作个小工具把这些有格式的数据自动分析出来,而输入的串就是这些带格式的数据,如: struct A { unsigned short a; unsigned short b; } A c; c.a = 0x1122; c.b = 0x3344; 把c送出去就是“11223344”, 现在我要在接受端把这些数据从新解析成 c.a == 0x1122, c.b == 0x3344, 其实不是很负责, 就是想了解有没有比较好的方法或库函数 倪正刚 <ni at twinisa.com> 写道: 我想你应该把这个长长的数据流分段进行转换,利用readline或者从缓冲区内读取一段转换一段。 没研究过这个,不过可以把你的想法告诉大家,是准备做什么用的呢? -----Original Message----- From: python-chinese-bounces at lists.python.cn [mailto:python-chinese-bounces at lists.python.cn]On Behalf Of 泰传 温 Sent: 2005年8月2日 22:53 To: nEO (a.k.a. gentoo.cn); python-chinese at lists.python.cn Subject: 回复: Re: [python-chinese] 问一个比较简单的问题, 数制转换 不仅仅这样, 而是一串特别特别长的十六进制字符串,其实就是网络数据流了, 如何转换成十六进制数, 即每两个字符是一个十六进制数, 即 “01”表示 0x01 "nEO (a.k.a. gentoo.cn)" <gentoo.cn at gmail.com> 写道: 在 05-8-2,泰传 温 写道: > 纯粹的十六进制字符串如何转换成十六进制数, > 如"AB0123" 转换成十六进制数AB0123(即0xAB, 0x01, 0x23) > 谢谢 from string import atoi atoi('0xAB0123', 0x) py->>> atoi('0xAB0123', 0x) 11206947 -- I'm the one, powered by nEO _______________________________________________ python-chinese list python-chinese at lists.python.cn http://python.cn/mailman/listinfo/python-chinese __________________________________________________ 赶快注册雅虎超大容量免费邮箱? http://cn.mail.yahoo.com _______________________________________________ python-chinese list python-chinese at lists.python.cn http://python.cn/mailman/listinfo/python-chinese __________________________________________________ 赶快注册雅虎超大容量免费邮箱? http://cn.mail.yahoo.com -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050802/5fe000b1/attachment.htm
2005年08月02日 星期二 23:21
没有啊,我只是在回复标题前面加上了个Re: Qiangning Hong <hongqn at gmail.com> 写道:[标题怎么变成乱码了?改回原来的标题了。] On 8/2/05, 泰传 温 wrote: > "nEO (a.k.a. gentoo.cn)" 写道: > > from string import atoi > > atoi('0xAB0123', 0x) > > > py->>> atoi('0xAB0123', 0x) > > 11206947 在Python3000里string模块会被取消,还是用int来转换更加pythonic一些。 > 不仅仅这样, 而是一串特别特别长的十六进制字符串,其实就是网络数据流了, 如何转换成十六进制数, 即每两个字符是一个十六进制数, 即 "01"表示 > 0x01 > 你想把一长串十六进制字符串变成一个数?那得要能表示的下才行。 .>>> int('A'*100, 16) 17214999187246057264372794480020079162198038618861490085537729043604317480112274 63086430235520091887623935447981831662250L .>>> int('A'*10000000000, 16) Traceback (most recent call last): File "", line 1, in ? OverflowError: long int too large to convert to int -- Qiangning Hong I'm usually annoyed by IDEs because, for instance, they don't use VIM as an editor. Since I'm hooked to that, all IDEs I've used so far have failed to impress me. -- Sybren Stuvel @ c.l.python Get Firefox! _______________________________________________ python-chinese list python-chinese at lists.python.cn http://python.cn/mailman/listinfo/python-chinese --------------------------------- DO YOU YAHOO!? 雅虎邮箱超强增值服务-2G超大空间、pop3收信、无限量邮件提醒 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050802/5f6bfef4/attachment.html
2005年08月02日 星期二 23:28
[请不要top-posting。请把你的回复写在引言的下方,并裁剪引言至只保留和你的回复相关内容] On 8/2/05, 泰传 温 <wendwghit at yahoo.com.cn> wrote: > 其实就是两个节点之间通过TCP/IP在传递数据,而这些数据是有格式的,所以想作个小工具把这些有格式的数据自动分析出来,而输入的串就是这些带格式的数据,如: > struct A > { > unsigned short a; > unsigned short b; > } > > A c; > c.a = 0x1122; > c.b = 0x3344; > > 把c送出去就是"11223344", 现在我要在接受端把这些数据从新解析成 > c.a == 0x1122, c.b == 0x3344, 其实不是很负责, 就是想了解有没有比较好的方法或库函数 你确信你发出去的是"11223344"不是"\x11\x22\x33\x44"? 如果是后者的话,你可以采用struct模块。 前者你就要自己解析字符串了,可以用我前一封信给出的list comprehension,重贴在这里: .>>> hexstr = 'AABBCCDD0011' .>>> [int(hexstr[i:i+2], 16) for i in xrange(0, len(hexstr), 2)] [170, 187, 204, 221, 0, 17] -- Qiangning Hong I'm usually annoyed by IDEs because, for instance, they don't use VIM as an editor. Since I'm hooked to that, all IDEs I've used so far have failed to impress me. -- Sybren Stuvel @ c.l.python Get Firefox! <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>
Zeuux © 2025
京ICP备05028076号