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