我试图将这个数据指针转换为我的 struct
并将实际值填充到结构中。
unsigned char *data = "00000001000000020000000300000004AE93KD93KD91Q830DMNE03KEkdaredgreenblueorangeyellow";
typedef struct mystruc {
int a;
int b;
int c;
int d;
} mystruc;
mystruct ms = (mystruct *)data;
printf("%i", ms->a);
输出:
808464432
我正在尝试找出如何用实际值 1, 2, 3, 4
我希望输出为:
1
稍后我还需要访问其余数据。
最佳答案
使用sscanf()
解析字符串中的数字。
mystruct ms;
sscanf(data, "%8d%8d%8d%8d", &ms.a, &ms.b, &ms.c, &ms.d);
%8d
表示将 8 个字符的十进制字段解析为 int
。如果它实际上是十六进制,请将其更改为 %8x
。
您的代码将字符串中的字符代码解释为结构成员的二进制表示,但不会对其进行解析。
关于将数据的无符号字符指针转换为包含整数的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59847146/