Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Python2.7字符串解释为类似于C字符数组的整数?_Python_C_Arrays_Python 2.7_Endianness - Fatal编程技术网

如何将Python2.7字符串解释为类似于C字符数组的整数?

如何将Python2.7字符串解释为类似于C字符数组的整数?,python,c,arrays,python-2.7,endianness,Python,C,Arrays,Python 2.7,Endianness,在C语言中,字符数组可以被int*引用,也可以转换为整数值。下面是一个小示例程序: #include <stdio.h> int main() { char *str = "AABB"; int *i = (int *)str; printf("int value: %d\n", *i); return 0; } #包括 int main(){ char*str=“AABB”; int*i=(int*)str; printf(“int值:%d\n”,*i)

在C语言中,字符数组可以被
int*
引用,也可以转换为整数值。下面是一个小示例程序:

#include <stdio.h>

int main() {
   char *str = "AABB";
   int *i = (int *)str;
   printf("int value: %d\n", *i);
   return 0;
}
#包括
int main(){
char*str=“AABB”;
int*i=(int*)str;
printf(“int值:%d\n”,*i);
返回0;
}
这将输出
int值:11116387
,即0x424141


如何在Python 2.7中实现这一点?我知道我可以使用ord()然后向左移动,但我认为有比这个更好的解决方案。此外,如果有一种方法可以调整endianness,这也会有所帮助。

使用
struct
模块将字节序列解释为C样式的数据类型:

import struct
hex(struct.unpack("i", "AABB")[0])

这给出了
'0x42424141'

您想用它实现什么?似乎您应该使用类似于
bytearray
的东西来代替字符串。@0x5453我正在尝试反转一个用C编写的玩具级哈希算法,这实际上是一个比任何东西都重要的练习。我试图用它来学习更多关于Python的知识,因为我已经习惯了C语言的一些低级特性。我认为你是对的,它应该被转换成字节数组。在C中这样做是个坏主意,有时是未定义的行为,即使在严格的别名规则中有
char
的特例,也可以通过
char*
访问有效类型的
int
对象,但是通过
int*
访问有效类型
char
的对象仍然是UB。@user2357112supportsMonica您是对的,这恰好是该算法所做的。谢谢,这正是我所希望的!