我正在使用 PySide 在 Python 中开发一个十六进制编辑器,它的左侧面板是十六进制查看器,右侧面板是解码的文本查看器(通过不同的编码)。
我目前的工作功能是使用 utf8 编码将二进制数据显示为文本。当然,我可以使用解码整行
line.decode('utf8', 'ignore')
而通过这种方式,每个 utf8 字符之间将没有间距。
但是如果字符的字节大小大于 1,我需要在字符之间添加空格。
例如
字节“61 e4 bd a0 e5 a5 bd”解码为utf8将是3个字符:a(61),你(e4 bd a0),好(e5 a5 bd)所以我想显示的是:
(十六进制编辑器)
61 e4 bd a0 e5 a5 bd ... | a 你_ _ 好_ _ ...(下划线表示空格)
所以我需要获取下一个 utf8 字符的字节大小来决定需要添加多少空格。
假设函数调用nextUtf8CharSize (bytes)
解码一行字节的伪代码将是
i = 0
while i < 16: # 16 bytes in one line
size = nextUtf8CharSize(bytes)
text = bytes[i:i+size].decode('utf8')
spaces = ''.join([' ' for j in range(size)])
text += spaces
i += size
是否有任何内置功能或 3rd 方库来完成这项工作?(否则需要自己实现)