Python 将字节数组引用为整数
在Python中,我知道Python3中存在某些方法,可以从现有字节数组创建新的整数。然而,我正在寻找一种方法来创建对字节数组的引用,作为一个整数。这样,如果引用发生更改,那么底层字节数组也会发生更改 在C中,这将按如下方式进行:Python 将字节数组引用为整数,python,byte,Python,Byte,在Python中,我知道Python3中存在某些方法,可以从现有字节数组创建新的整数。然而,我正在寻找一种方法来创建对字节数组的引用,作为一个整数。这样,如果引用发生更改,那么底层字节数组也会发生更改 在C中,这将按如下方式进行: int main(无效){ 无符号字符字节[4]={1,0,0,0}; int*int_ref=(int*)字节; *int_ref+=59; printf(“字节现在是%u%u%u%u\n”, 字节[0], 字节[1], 字节[2], 字节[3]); 返回0; }
int main(无效){
无符号字符字节[4]={1,0,0,0};
int*int_ref=(int*)字节;
*int_ref+=59;
printf(“字节现在是%u%u%u%u\n”,
字节[0],
字节[1],
字节[2],
字节[3]);
返回0;
}
上述程序打印
60
。我正在寻找用Python实现这一点的方法 这些方面的东西似乎很接近你想要的:
import _ctypes
def di(obj_id):
""" Reverse of id() function. """
# from https://stackoverflow.com/a/15012814/355230
return _ctypes.PyObj_FromPtr(obj_id)
def func(obj_id):
ba = di(obj_id)
ba[0] += 50
data = bytearray([1, 0, 0, 0])
func(id(data))
print('bytes is now {} {} {} {}'.format(*data)) # -> bytes is now 51 0 0 0
“然而,我正在寻找一种方法来创建对字节数组的引用,作为一个整数。”这样的事情在Python中并不存在。如果您想使用类似的东西,请使用C。Python是一种纯粹面向对象的语言。一切都是对象。该语言中也没有指针。尽管在
ctypes
模块中可能有一些东西与您要查找的内容近似,但这对我来说是个棘手的问题。你真正想要完成的是什么?当您需要整数时,为什么不能直接使用bytearray
?注意,arr[i]
将返回一个int
类型(它是动态创建的)。@juanpa.arrivillaga我正在尝试在python中制作一个字节码读取器,它可以读取二进制存储的压缩类型数据。然而,我发现struct
模块可能更符合我的要求。我猜这个参考想法对python来说可能是行不通的。事实上,即使在C语言中,这也是未定义的行为。要合法地进行此操作,您必须有一个名为int
的对象,该对象的别名为char*
,而不是相反。