[英]How do I convert binary/hex array to string array in C
在我的追求(仍然开始:))中,要更好地进行编程,我偶然发现了一些我无法回答的问题。
我负责将二进制/十六进制数据(在数组中)转换为字符串数组。 到目前为止,我仅设法转换和打印十六进制数据的“ 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 + strlen(finalString)
。
这是一个示例(假设输入数组始终以'\\0'
结尾):
int i = 0;
char finalString[250] = "{";
unsigned long rawdata[] = {0x60,0x100,'\0'};
for (i=0; i<sizeof(rawdata)/sizeof(*rawdata)-1; i++)
sprintf(finalString+strlen(finalString),"%lx,",rawdata[i]);
sprintf(finalString+strlen(finalString),"\\0}");
请注意, sprintf
通常是不安全的(考虑使用snprintf
或sprintf_s
代替)。
#include <stdio.h>
#include <string.h>
int main()
{
int i, j;`
unsigned long rawdata[] ={0x60,0x100,'\0'};
char stringForRawdata[250] = "{";
int k = sizeof(rawdata)/ sizeof(rawdata[0]), c = 1;
for(i, j=0; i< k; i++)
{
j+=c; // think why
c = sprintf(&stringForRawdata[j], "0x%x,", rawdata[i]);
}
sprintf(&stringForRawdata[j], "\\0}");
printf("\nstringForRawdata = %s\n",stringForRawdata);
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.