不使用移位将数组中的连续字节转换为指针

标签 c arrays pointers

我有一个包含地址的二维数组。地址从 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/

相关文章:

c - 当 unsigned int 可以保存任何地址时, uintptr_t 和 unsigned int 有什么区别吗?

检查 IF ELSE 语句是否有效

c - 如何在奇偶排序程序中创建线程并正确排序?

通过 c 中的用户输入创建字符串数组?

javascript - 如何从树中删除每个对象

java - 将 Java 顶点对象数组传递给 OpenGL 入口点

c++ - 重载 << 运算符 C++ - 指向类的指针

c - 初始化 Apache 服务器中的全局变量

c - 如何在C HTTP客户端程序中向文件写入HTTP请求

c - 操纵指向任意位置的指针