【发布时间】:2016-02-19 01:49:45
【问题描述】:
我需要读取一个 utf-16 编码的字符串,该字符串存储在 LLDB 的 python 脚本的内存中。根据他们的文档,我可以使用ReadMemory(address, length, error),但我需要提前知道它的 length。 如果不是,python 的 decode 函数在偶然发现无法解码的字符时失败(即使使用 'ignore' 选项)并且进程停止:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u018e' in position 12: ordinal not in range(128)
任何人都可以提出实现这一目标的方法吗? (使用“python”或“lldb python”实现)。我没有原始字符串的长度。
谢谢。
【问题讨论】:
-
你能显示你的代码吗?很高兴您显示错误,但请显示完整的回溯和引发错误的示例代码。
-
在内存中表示字符串的方式有很多种。他们的文档有告诉你他们是怎么做的吗?
-
这是一个内存转储示例或我需要解析的内容:
(lldb) memory read 0x10142c838 0x10142c838: 61 00 62 00 63 00 64 00 65 00 00 00 00 00 00 00 a.b.c.d.e....... 0x10142c848: 00 00 00 00 00 00 00 00 8e 01 00 00 00 00 00 00 ................似乎是 UTF-16-le 编码的字符串。但我不确定它是否总是以空值终止。我希望这能提供更多的见解。
标签: python memory lldb string-length unicode-string