gpt4 book ai didi

python - 如何在python中打印出对象的内存内容?

转载 作者:太空宇宙 更新时间:2023-11-04 01:19:08 26 4
gpt4 key购买 nike

和在C/C++中一样,我们可以如下打印一个变量的内存内容:

double d = 234.5;
unsigned char *p = (unsigned char *)&d;
size_t i;
for (i=0; i < sizeof d; ++i)
printf("%02x\n", p[i]);

是的,我知道我们可以使用 pickle.dump() 来序列化一个对象,但它似乎生成了很多冗余的东西..我们如何才能以纯粹的方式在 Python 中实现这一点?

最佳答案

无法从 Python 代码逻辑级别访问 Python 对象的内部内存表示,您需要编写 C 扩展。

如果您正在设计自己的序列化协议(protocol),那么可能是 struct模块是你要找的。它允许将 Python 值转换为二进制数据并以您指定的格式返回。例如

import struct
print(list(struct.pack('d', 3.14)))

将显示 [31, 133, 235, 81, 184, 30, 9, 64] 因为这些是 3.14 的 double 表示的字节值。

注意:struct.pack 在 Python 3.x 中返回一个 bytes 对象,在 Python 2.x 中返回一个 str 对象。要在 Python 2.x 中查看字节的数字代码,您需要改用 print map(ord, struct.pack(...))

关于python - 如何在python中打印出对象的内存内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22421466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com