首页
社区
课程
招聘
python八进制字符串的转化
发表于: 2013-11-20 17:14 8659

python八进制字符串的转化

2013-11-20 17:14
8659
比如:
“\016\f\016\031” -> 0e0c0e19(这里值是16进制)
"\032\013\030\031\017#\004\036" -> 1a0b18190f23041e(这里值是16进制)

"\032\013\030\031\017#\004\036" 和 “\016\f\016\031”是从文件里读出来的

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 328
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
Python 2、Python 3通用。

print("".join("{:02x}".format(ord(c)) for c in "\016\f\016\031"))
print("".join("{:02x}".format(ord(c)) for c in "\032\013\030\031\017#\004\036"))
2013-11-20 19:41
0
雪    币: 1024
活跃值: (240)
能力值: ( LV12,RANK:310 )
在线值:
发帖
回帖
粉丝
3
"\032\013\030\031\017#\004\036" 和 “\016\f\016\031”是从文件里读出来的,操作的时候相当于一个字符串变量。如果不是读出来的,可以这样:print “\016\f\016\031”.encode("hex")
2013-11-20 20:42
0
雪    币: 1024
活跃值: (240)
能力值: ( LV12,RANK:310 )
在线值:
发帖
回帖
粉丝
4
"\032\013\030\031\017#\004\036" 和 “\016\f\016\031”是从文件里读出来的,操作的时候相当于一个字符串变量,你这样写实现不了。如果不是读出来的,可以这样:print “\016\f\016\031”.encode("hex")
2013-11-20 20:43
0
雪    币: 328
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
"\032\013\030\031\017#\004\036" 和 “\016\f\016\031”是从文件里读出来的,操作的时候相当于一个字符串变量,你这样写实现不了。如果不是读出来的,可以这样:print “\016\f\016\031”.encode("hex")


这种写法在Python 3以后无效。
2013-11-20 20:48
0
雪    币: 328
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
从文件里读出来的,那就更简单了。用binascii.hexlify就可以了。
Python 2、Python 3通用。
import binascii
print(binascii.hexlify(open('test.bin', 'rb').read()).decode('utf-8'))


test.zip
上传的附件:
2013-11-20 22:06
0
雪    币: 1024
活跃值: (240)
能力值: ( LV12,RANK:310 )
在线值:
发帖
回帖
粉丝
7
test.bin的内容应该是如下:
'\016\f\016\031'

我上传了这样的test.bin
上传的附件:
2013-11-22 11:17
0
雪    币: 328
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
Python 2、Python 3通用。
只考虑Python 2的话,encode/decode可以拿掉。

import binascii
print(binascii.hexlify(eval(open("test.bin", "rb").read()).encode('utf-8')).decode('utf-8'))


test.zip
上传的附件:
2013-11-22 20:53
0
雪    币: 1024
活跃值: (240)
能力值: ( LV12,RANK:310 )
在线值:
发帖
回帖
粉丝
9
非常感谢您的回复,我昨天回去又详细看了下,实际情况应该是字符串前后没有单引号,能否再帮忙看下,我上传了一个类似的test2.bin
上传的附件:
2013-11-24 14:18
0
雪    币: 328
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
Python 2.7+、Python 3通用。


import binascii
print(binascii.hexlify(eval(b"'" + open("test2.bin", "rb").read() + b"'").encode('utf-8')).decode('utf-8'))


test.zip
上传的附件:
2013-11-24 22:58
0
雪    币: 1024
活跃值: (240)
能力值: ( LV12,RANK:310 )
在线值:
发帖
回帖
粉丝
11
[QUOTE=suetorp;1242109]Python 2.7+、Python 3通用。

test.zip[/QUOTE]

thanks
2013-11-25 11:16
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
神奇。。
2013-11-25 13:19
0
游客
登录 | 注册 方可回帖
返回
//