如何在 python 中将 32b(四个字符)从 int 值转换为 ASCII 字符串



嗨,我有一个 32b 值,我需要轻松地将其截断为四个字节,将每个字节转换为 ASCII 并将它们组合成一个四个字母的字符串。我还需要相反的过程。我已经能够以以下丑陋的方式在一个方向上做到这一点:

## the variable "binword" is a 32 bit value read directly from an MCU, where each byte is an 
## ASCII character
char0 = (binword & 0xFF000000) >> 24
char1 = (binword & 0xFF0000) >> 16
char2 = (binword & 0xFF00) >> 8
char3 = (binword & 0xFF)
fourLetterWord = str(unichr(char0))+str(unichr(char1))+str(unichr(char2))+str(unichr(char3))
现在,我

发现这种方法真的很不优雅且耗时,所以问题是我如何做得更好?而且,我想更重要的问题是,我如何以另一种方式转换?

您应该使用这些转换的struct模块的packunpack调用

number = 32424234
import struct
result = struct.pack("I", number)

和返回:

 number = struct.unpack("I", result)[0]

请参考结构模块上的官方文档了解结构字符串语法,和标记,以确保字节序和数字大小。https://docs.python.org/2/library/struct.html

附带说明一下 - 这绝不是"ASCII" - 它是一个字节串。ASCII 是指使用 32-127 数字范围内的代码进行的特定文本编码。关键是,如果你需要一个字节流,你不应该将字节串视为文本 - 更不用说将"ASCII"视为文本字符串的别名 - 因为它可以代表世界上存在的不到1%的文本字符。

相关内容

  • 没有找到相关文章

最新更新