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

标签 c++ c arrays string hex

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

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

相关文章:

c++ - 包含 qgis 头文件时出错

c - 从C中的堆栈中删除字符串

c - 如何制作一个在C中重复的菜单

c++ - 从 libexpect 获取输出

python - 组合索引操作时查看和复制与 NumPy 数组的混淆

c++ - 简单的窗口但不起作用

c++ - 为什么用新语法 `noexcept` 重写旧的空抛出规范?

c++ - 在 C++ 中的递归函数中使用引用参数

PHP:显示数组中的数据

Javascript数组只保存最近的对象