在我的追求(仍在开始:))中,为了更好地编程,我偶然发现了一些我无法回答的问题。
我的任务是将二进制/十六进制数据(在数组中)转换为字符串数组。到目前为止,我只设法转换和打印十六进制数据的“MSB”。
这是我当前的代码。高度赞赏建设性的批评:)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 0;
unsigned long rawdata[] ={0x60,0x100,'\0'};
char stringForRawdata[250];
char finalString[250];
while(i<2)
{
sprintf(stringForRawdata,"%lx",*(rawdata+i));
//sprintf(finalString,"%s",stringForRawdata);
finalString[i] = *(stringForRawdata);
printf("\nfinalString[%d] = %s",i,finalString+i);
printf("\nrawdata = %lx for i = %d\n",*(rawdata+i),i);
i = i+1;
}
printf("\n stringForRawdata = %s\n",stringForRawdata);
printf("\n\n finalString array is %s\n",finalString);
}
输入是unsigned long rawdata[] ={0x60,0x100,'\0'};
预期输出是字符串数组{60,100,\0}
或{0x60,0x100,\0}
问题是我只能获取字符串数组中最左边的数字。
最佳答案
您的问题始于该行
finalString[i] = *(stringForRawdata);
finalString 是一个 char 数组,因此 FinalString[i] 是单个字符。因此,每次循环时,您只在 FinalString 中设置一个字符。您需要使用 strcat 将原始数据字符串连接到 FinalString 中。
关于c++ - unsigned long(u32_t) 转换为字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21810934/