unsigned long(u32_t)转换为字符串数组

时间:2014-02-16 12:14:22

标签: c++ c arrays string hex

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

我的任务是将二进制/十六进制数据(在数组中)转换为字符串数组。到目前为止,我只能设法转换和打印十六进制数据的" MSB" s。

这是我目前的代码。建设性批评高度赞赏:)

#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}

问题是我只能将最左边的数字输入到我的字符串数组中。

1 个答案:

答案 0 :(得分:0)

您的问题从第

行开始
finalString[i] = *(stringForRawdata);

finalString是一个char数组,所以finalString [i]是一个单个字符。所以你每次循环时只在finalString中设置一个字符。您需要使用strcat将rawdata字符串连接到finalString。