gpt4 book ai didi

python - 整数(表示位序列)在 Python 中重新解释为字符数组

转载 作者:太空狗 更新时间:2023-10-30 02:06:47 26 4
gpt4 key购买 nike

我已经编写了一些我想移植到 python 的 C 代码,因为我觉得 python 是一种更好的“概念”语言。

在我的 C 代码中,我使用内存重新解释来实现我的目标,例如:

sizeof(int)  is 4 byte
sizeof(char) is 1 byte

char c[4]={0x01,0x30,0x00,0x80};
int* i=(int*)c;

*i has the value 0x80003001

同样,如果我有:

int* j = (int*)malloc(sizeof(int));
char* c = (char*)j;
*j = 0x78FF00AA;

c is now {0xAA, 0x00, 0xFF, 0x78}

我想在 python 中做类似的事情,我意识到我可以使用位操作来完成这个:

chararray=[]
num=1234567890
size=8

while len(chararray) < size:
char = chr( (num & 255 ) )
num = num >> 8
chararray.append(char)

但是我希望有一种更快的方法来完成这个。

python有没有类似C的union的东西?

最佳答案

您可以使用 struct module :

import struct

# Pack a Python long as if it was a C unsigned integer, little endian
bytes = struct.pack("<I", 0x78FF00AA)
print [hex(ord(byte)) for byte in bytes]

['0xaa', '0x0', '0xff', '0x78']

阅读文档页面以查找有关数据类型的信息,并注意字节顺序。

关于python - 整数(表示位序列)在 Python 中重新解释为字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/333097/

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