python 字符转换

我们所看到的“明文字符串”,都是经过编码(比如ASCII、Uncoded、UTF-8、GB-2312等)后呈现在我们面前的。

文本中“3082”想要“所见到所得”到内存中处理,必须decode('hex')一下(把字符串处理成内存中表面“相同”的二进制),表示成“\x30\x82"(类似编译器的东西将"\x"格式的"字符串"转化成数值,在我们看来这个就是内存中的数值,将其赋值给一个变量可以用下标索引(可以用ord函数转为值),或者切片);否则其在内存中存储的是"\x33\x30\x38\x32"。(即decode()函数2个变一个,处理的数据必须是偶数)

sublime默认会个可视字符串文件加一个回车字符,Win下是"\r\n"--"\x0d\x0a",linux下是"\n"--"\x0a"

相反:

“\x30\x82"在内存中,打印不出来可见串(可以写文件验证),所以要以可见串的形式打印,这时候用encode('hex')--将内存中的二进制以“表面相同”的字符串打印,呈现给我们,

"\x30\x82" encode('hex')-> "3082" encode('hex')-> "33303832"

==============================================================

字符串转换一个大数,用int("",16)。 数值没有encode和decode方法,只有“字符串”有

数值要读写文件或者打印,必须转化成字符串:str(n)

 

内存数据转大数:

'\x10\x12\x13\x14...'转成大数,先encode(‘hex’),再int(,16)。如:

sig = int(cert[-0x80:].encode('hex'),16)

posted on 2016-06-30 19:18  寻步  阅读(2126)  评论(0编辑  收藏  举报