gpt4 book ai didi

c - 如何在 C 中将二进制/十六进制数组转换为字符串数组

转载 作者:行者123 更新时间:2023-11-30 17:39:27 25 4
gpt4 key购买 nike

在我的追求(仍在开始:))中,为了更好地编程,我偶然发现了一些我无法回答的问题。

我的任务是将二进制/十六进制数据(在数组中)转换为字符串数组。到目前为止,我只设法转换和打印十六进制数据的“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 通常不安全(请考虑使用 snprintfsprintf_s 代替)。

关于c - 如何在 C 中将二进制/十六进制数组转换为字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21811353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com