【问题标题】:Append unsigned char* to unsigned char*将 unsigned char* 附加到 unsigned char*
【发布时间】:2015-03-19 22:57:04
【问题描述】:

我想将一个 unsigned char* 附加到另一个 unsigned char* 以创建一个长字符串,该字符串可以返回给父函数并进行解析。我有以下内容:

unsigned char *bytes = NULL;
unsigned char *retVal = NULL;
int intVal1, intVal2;

bytes = readRegister(0x01); 
if ( bytes != NULL )
{
   intVal1 = (*(int *)bytes) & 0xffffffff;
   printf("intVal1 = 0x%x\n", intVal1); //intVal1 = 0x7fffac00
 }
bytes = readRegister(0x02); 
if ( bytes != NULL )
{
   intVal2 = (*(int *)bytes) & 0xffffffff;
   printf("intVal2 = 0x%x\n", intVal2); //intVal2 = 0x7fffac11
 }

如何连接 intVal1 和 intVal2 的值以使 retVal 等于“7fffac007fffac11”?或者有没有办法在每次调用 readRegister() 后将“字节”连接到 retVal?

非常感谢任何帮助!

【问题讨论】:

  • 能否不对齐?这段代码似乎正在做我想要它做的事情而没有编译器错误。您能否详细说明一下,我想了解这个问题?
  • 对不起,bytes 的地址可能inttake a look 不对齐
  • 有道理,谢谢!

标签: c concatenation itoa


【解决方案1】:

您想分配一些内存并使用snprintf 来产生您的返回值。 调用者将负责使用free 释放返回值:

retVal = malloc(17);
if (retVal) snprintf(retVal, 17, "%08x%08x", intVal1, intVal2);
return retVal; 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    相关资源
    最近更新 更多