【问题标题】:unsigned long(u32_t) conversion to string arrayunsigned long(u32_t) 转换为字符串数组
【发布时间】:2014-03-15 16:16:11
【问题描述】:

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

我的任务是将二进制/十六进制数据(在数组中)转换为字符串数组。到目前为止,我只设法转换和打印十六进制数据的“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}

问题是我只能得到最左边的数字到我的字符串数组。

【问题讨论】:

标签: c++ c arrays string hex


【解决方案1】:

你的问题从这行开始

finalString[i] = *(stringForRawdata);

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

【讨论】:

  • 谢谢蒂姆!虽然我得到了我真正想要的东西,但我学到了一些新东西。无论如何,现在我可以将十六进制数组放入字符串数组,但是,每个数字都分配给每个元素。所以如果我的十六进制数组有 2 个元素,我的字符串数组有 4 个。我想我可以解决这个问题,但额外的信息/帮助仍然很棒!
猜你喜欢
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 2016-04-19
  • 2019-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-20
相关资源
最近更新 更多