gpt4 book ai didi

转换c指针类型

转载 作者:行者123 更新时间:2023-11-30 14:30:36 26 4
gpt4 key购买 nike

我有一个指向名为 uchar4 的结构类型的 c 指针,它看起来像

{
uchar x;
uchar y;
uchar z;
uchar w;
}

我还有以 uint8* 形式传入的数据。我想创建一个 uchar* 指向 uint8* 处的数据,所以我尝试这样做:

uint8 *data_in;
uchar4 *temp = (uchar4*)data_in;

但是,前8个字节似乎总是错误的。还有其他方法可以做到这一点吗?

编辑:

输入数据 = 32 43 F6 A8 88 5A 30 8D 31 31 98 A2 E0 37 07 34

输出数据 = 32 88 31 E0 37 07 34 8D 31 31 98 A2 E0 37 07 34

前半部分总是这些看似随机的值

最佳答案

看哪,卑微的联盟:

#include <stdio.h>

typedef struct {
unsigned char x, y, z, w;
} xyzw;

typedef union {
xyzw x;
unsigned int i;
} ixyzw;


unsigned int xyzw_to_i(ixyzw *p)
{
return p->i;
}

int main()
{
xyzw x = {1, 2, 3, 4};

printf("sizeof unsigned char %d\n", sizeof(unsigned char));
printf("sizeof unsigned int %d\n", sizeof(unsigned int));
printf("sizeof xyzw %d\n", sizeof(xyzw));
printf("sizeof ixyzw %d\n", sizeof(ixyzw));

printf("xyzw = { %d, %d, %d, %d }\n", x.x, x.y, x.z, x.w);
printf("i = 0x%08x\n", xyzw_to_i((ixyzw *) &x));
return 0;
}

在我的机器上恰好产生:

sizeof unsigned char 1
sizeof unsigned int 4
sizeof xyzw 4
sizeof ixyzw 4
xyzw = { 1, 2, 3, 4 }
i = 0x04030201

但不能指望跨编译器或机器的这种行为。

关于转换c指针类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3002798/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com