将数据的无符号字符指针转换为包含整数的结构

标签 c casting type-conversion

我试图将这个数据指针转换为我的 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/

相关文章:

比较c中的命令行参数

c - 如何使用 MongoDB C 驱动程序和 FoundationDB 文档层进行事务处理?

C 中的 Cast 表达式语义

c# - 如何在 C# 3.5 的父类(super class)中定义强制转换运算符?

c# - LINQ 转换问题

c++ - 如何将 int 转换为 QString?

javascript - 在javascript中添加两个空白对象或空白数组

c - 使用 C 解析 URL 的最佳方法?

c - 警告 TokenList 类型转换

c# - 动态类型转换为内部类型的通用列表