python的bytes 打印中带有字符

要用到python把大概4000个bytes最终转换成c语言中数组的形式。我们知道python中的bytes是二进制的格式,而c语言的代码相当于文本。所以解决思路也很简单,就是把python中这4000个bytes先转换成字符,然后再写入到文本文件中。

但是其中却出现了一个问题,网上搜半天解决不了。当我把bytes转换成字符串打印出来以后,发现一个现象,并不是所有的byte都是按照十六进制显示,而是类似下面这种格式:

可以看到打印出来的效果是既包含ASCII字符又包含十六进制格式的显示。这样最终导致写入到文件里面也是这样的效果。看了一大堆资料,最终结果就是如果要全部都显示十六进制是没办法直接实现的,需要自己代码实现转换。

那么到底1个byte什么时候显示ASCII字符,什么时候显示16进制数据?当byte的值小于0x80的时候是按照ascii字符显示,大于等于0x80就按照16进制显示。因为ASCII的范围就是0-0x7f

我又不想去自己添加手动转换代码,那么只能另辟蹊径了,可以把bytes先转换成list格式,这样所有的byte都是以数字的形式显示了,再后面进行稍微加工一下写入文件就可以排版正c语言的数组形式了。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注