【发布时间】:2016-02-19 15:29:49
【问题描述】:
我想转换十六进制的字符串表示,例如:
"18ec1975b97174"
到小端字符串。 我对python很熟悉,所以我可以用
struct.pack("<L", "18ec1975b97174")
在 C++ 中什么是等价的?可以处理字符串还是我应该先将其转换为数值?
【问题讨论】:
-
你的问题有点不清楚。字符串只是字节序列,“字节顺序”术语不适用。你想转换数字,表示为字符串?没有标准的 C++ 工具可以处理大于 64 位宽度的数字。您可以手动完成。
-
struct.pack("<L", "18ec1975b97174")给了我一个错误:struct.error: required argument is not an integer -
请说出预期的结果。或者至少给出一个正确的 Python 等价物! C 可以轻松做你想做的事,但目前我猜不出你想要什么......
-
您的 python 示例不起作用。我想你的意思是
struct.pack("<L", 0x18ec1975b97174)?也许?哦,其实我觉得你也不是这个意思。我想你想颠倒文本所代表的“字节”的顺序吗?无论哪种方式,您的 Python 版本都不会像您认为的那样工作。 -
我认为,在 python 中,您的意思类似于:
"".join(reversed([x[i:i+2] for i in range(0, len(x), 2)]))其中 x 是您的输入字符串? (如果输入字符串不是偶数个字符,则此代码不起作用,但我只是想说明一种方法)。我的意思是,我怀疑您可以将其音译为 C++(使用带有 += 2 增量器和缓冲区的 for 循环将结果写入其中,但我对 C++ 的了解不足以回答...)
标签: python c++ endianness