【发布时间】:2020-08-17 09:20:42
【问题描述】:
在 C 中,字符数组可以被 int * 引用或强制转换为整数值。这是一个小示例程序:
#include <stdio.h>
int main() {
char *str = "AABB";
int *i = (int *)str;
printf("int value: %d\n", *i);
return 0;
}
这会输出int value: 1111638337,即0x42424141。
如何在 Python 2.7 中实现这一点?我知道我可以使用 ord() 然后左移,但我认为有比这更好的解决方案。另外,如果有一种方法可以调整字节顺序,那也会很有帮助。
【问题讨论】:
-
你想用这个来完成什么?看来您应该使用
bytearray之类的东西而不是字符串。 -
@0x5453 我正在尝试反转用 C 编写的玩具级散列算法,这真的比什么都重要。我正在尝试使用它来了解有关 Python 的更多信息,因为我已经习惯了 C 具有的一些更底层的特性。我认为您是对的,应该将其转换为字节数组。
-
在 C 中这样做是个坏主意,并且有时是未定义的行为,即使在严格的别名规则中使用
char的特殊情况 - 可以访问有效类型的对象int通过char *,但通过int *访问有效类型char的对象仍然是UB。 -
@user2357112supportsMonica 你是对的,它恰好是那个算法的作用。
标签: python c arrays python-2.7 endianness