gpt4 book ai didi

将 Char 指针转换为 UINT32

转载 作者:行者123 更新时间:2023-11-30 21:40:03 29 4
gpt4 key购买 nike

我需要将字符串传递给函数并分配给 UINT32 。

void main ()
{
do_this ("SELF", 18, 100);
}

void do_this(char* comm , UINT32 num , UINT32 value)
{
UINT32 inl_values[13] ;

inl_values[0] = (UINT32)comm ;
}

我尝试将字符串分配给 inl_values。但我收到一个错误:赋值从指针生成整数而不进行强制转换。

我需要将此值捆绑到 UINT32 中,并将 inl_values 完整数组传递给不同的函数。有人可以告诉我如何解决这个问题吗?

最佳答案

我猜测您的代码正在调用一个具有 32 位操作码作为第一个参数的 API,并且该 API 的作者选择了一个操作码,这样如果他执行了以下组合的十六进制/ASCII 转储你的数组他会看到 ASCII 字母“SELF”。有关此方法的示例,请参阅 nginx 配置代码:https://github.com/nginx/nginx/blob/master/src/core/ngx_conf_file.h

#define NGX_CORE_MODULE      0x45524F43  /* "CORE" */

字符串“CORE”位于注释中以供引用,但代码从未使用实际字符串。该符号是一个无符号 32 位整数,可以在任何需要 int 的地方使用。然而 int 的 4 个字节(向后读取 - 小端)是 0x43 ('C')、0x4F ('O')、0x52 ('R') 和 0x45 ('E)

我建议您遵循相同的方法 - 不要创建 ASCII 字符串“SELF”并进行数学运算将其转换为整数,而是让编译器完成这项工作。

#define SELF_CODE  0x464C4553   /* "SELF" */ 

使用这个新常量,重写代码以避免使用任何字符串:

void main ()
{
do_this (SELF_CODE, 18, 100);
}

void do_this(UINT32 comm , UINT32 num , UINT32 value)
{
UINT32 inl_values[13] ;

inl_values[0] = comm ;
}

关于将 Char 指针转换为 UINT32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25632398/

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