我有一个十进制后pi的前1亿位数的十六进制文件,在十六进制编辑器中,它看起来像这样:
14 15 92 65 35 89 79 32 etc.
我需要将其转换为字符串(最终是整数)“ 1415926435897932”等。因此,无需将其从十六进制“转换”为十进制,它已经是十进制了,就像十六进制字节一样。(我在标题中的引号中使用了“文字”一词,这可能完全是错误的词,因为它暗含了字符串文字。)
当我尝试在python中读取文件时,遇到各种编码困难(因为第一个字节15是非打印字符,等等)。
例如:
>>> f = open('pi100m.hexbin.000', 'rb')
>>> contents = f.read()
>>> f.close()
>>> snippet = contents[:50]
>>> snippet
'\x14\x15\x92e5\x89y28F&C82yP(\x84\x19qi9\x93u\x10X \x97IDY#\x07\x81d\x06(b\x08\x99\x86(\x03H%4!\x17\x06y'
>>> # if I 'print snippet', I get those question marks in triangles
>>> # for the nonprinting characters, they do not reproduce
>>> # in stackoverflow
我已经尝试了很多关于编码的StackOverflow文章和Python帮助文档,但是我感觉我缺少一些非常基本的东西。
编码为十六进制,那么您至少具有一个字符串表示形式:
integer_string = contents.encode('hex')
演示:
>>> snippet = '\x14\x15\x92e5\x89y28F&C82yP(\x84\x19qi9\x93u\x10X \x97IDY#\x07\x81d\x06(b\x08\x99\x86(\x03H%4!\x17\x06y'
>>> snippet.encode('hex')
'1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679'
本质上,您的十六进制编辑器会执行此操作,将字节表示为十六进制字符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句