我需要将字符串传递给函数并分配给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 ;
}

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

10-13 04:58