我需要将一个字符串传递给一个函数并分配给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完整数组传递给另一个函数。有人可以告诉我怎么解决这个问题。
答案 0 :(得分:0)
我猜你的代码正在调用一个具有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 ;
}