我有一个包含地址的二维数组。地址从 code[line][1]
开始。它有 4 个字节长。我需要在不使用 shift 的情况下将其转换为指针。
下面是我用于轮类的代码,它运行良好。如果我可以将这些字节放入一个 long
中,那将起作用,因为我可以将 long
转换为指针。此外,如果字节顺序错误,我可以在其他地方更改我的代码以获得正确的字节序样式。没有函数调用。
尝试搜索这方面的示例很困难,因为它们都展示了如何通过轮类来做到这一点。
unsigned long address = (((unsigned long) code[line][1]) << 24) +
(((unsigned long) code[line][2]) << 16) +
(((unsigned long) code[line][3]) << 8) +
code[line][4];
unsigned int *add = (unsigned int*) address;
最佳答案
我想我明白了..
add = (unsigned int*) (*((unsigned long*) &code[line][1]));
我将指针指向第一个字节并将其转换为长指针...然后将 long 的值转换为 int 指针..不得不更改我的字节序
关于不使用移位将数组中的连续字节转换为指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39149907/