0

我正在使用 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 方库来完成这项工作?(否则需要自己实现)

4

0 回答 0