Python 将字节数组引用为整数

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; }

在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;
}

上述程序打印
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*
,而不是相反。