繁体   English   中英

如何将 integer 数组转换为可以存储在 char 数组中的十六进制数组?

[英]How to convert an integer array to a hex array that can be stored in a char array?

我想知道如何将 integer 数组转换为可以存储到 char 数组中的十六进制数组,例如以下格式:

const unsigned char k[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C};

下面是代码:

#include<stdio.h>
#include<stdint.h>
#include<stdlib.h>

int main()
{
    uint8_t a[] = {0, 10, 0, 0, 35, 45, 99, 100};
    const char k[sizeof(a)/sizeof(uint8_t)];
    for(int i=0; i<sizeof(a)/sizeof(uint8_t);i++)
    {
        sprintf(k[i],"0x%X",a[i]); //Compile Error: Does not work because cannot store char* into char
        printf("%d\n", a[i]);
    }

    return 0;
}

我在网上搜索,我找不到任何关于如何将 integer 数组转换为这个特定的十六进制字符数组(以这种格式)的想法,因为我需要将这个特定类型的数组传递给 function。

我不完全确定您是否尝试使用代表给定 integer 的十六进制值的字符串填充数组,或者只是有一个十六进制值数组。 C 没有本机十六进制类型,如果将十六进制值存储在 char 数组中,则与在数组中存储 int 相同(假设 int 在 -128 到 127 范围内)。 如果您尝试将超出此范围的内容存储到 char 中,无论是十六进制还是标准的 10 基表示形式,它都将不起作用。 但是,如果您想要一个十六进制表示法的字符串数组,您可以执行以下操作(假设整数小于 255。如果要存储更大的整数,则必须增加m的值):

    #include<stdio.h>
    #include<stdint.h>
    #include<stdlib.h>
    
    int main()
    {
        int m = 2;
        uint8_t a[] = {0, 10, 0, 0, 35, 45, 99, 100};
        const char k[sizeof(a)/sizeof(uint8_t)][m+3];
        for(int i=0; i<sizeof(a)/sizeof(uint8_t); i++)
        {
            sprintf(k[i],"0x%X",a[i]);
            printf("%s\n", k[i]);
        }
    
        return 0;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM