C 语言中将uint8_t 的数组怎么转成char 数组?

老师们好,
请教一下把下面的数组转成char 数组 怎么转?

 uint8_t out[32] = {
    0x4d, 0xce, 0x9b, 0x87, 0x6d, 0x6f, 0x1b, 0x24, 0x53, 0xcf, 0x0c, 0xa3, 0x6d,       0xc5, 0xc9, 0x05, 0xed, 0x9a, 0xee, 0xd7, 0x82, 0x18, 0xfd, 0x35, 0xb9, 0x8a,     0x58, 0x2c, 0xae, 0x44, 0x73, 0x15
};

或者将上面的数组输出到文件中. 如下面的格式:
4dce9b876d6f1b2453cf0ca36dc5c905ed9aeed78218fd35b98a582cae447315

阅读 7.5k
2 个回答
✓ 已被采纳

要将给定的uint8_t数组转换为char数组,可以使用类型转换操作符或循环逐个复制数组元素。下面是两种方法的示例代码:

方法一:使用类型转换操作符

uint8_t out[32] = {0x4d, 0xce, 0x9b, 0x87, 0x6d, 0x6f, 0x1b, 0x24, 0x53, 0xcf, 0x0c, 0xa3, 0x6d, 0xc5, 0xc9, 0x05, 0xed, 0x9a, 0xee, 0xd7, 0x82, 0x18, 0xfd, 0x35, 0xb9, 0x8a, 0x58, 0x2c, 0xae, 0x44, 0x73, 0x15};

char charArray[64]; // 32字节的uint8_t数组转换为64字节的char数组

for (int i = 0; i < 32; i++) {
    charArray[2 * i] = (out[i] >> 4) < 10 ? (out[i] >> 4) + '0' : (out[i] >> 4) - 10 + 'a';
    charArray[2 * i + 1] = (out[i] & 0x0f) < 10 ? (out[i] & 0x0f) + '0' : (out[i] & 0x0f) - 10 + 'a';
}

// 输出char数组
for (int i = 0; i < 64; i++) {
    printf("%c", charArray[i]);
}

方法二:使用循环逐个复制元素

uint8_t out[32] = {0x4d, 0xce, 0x9b, 0x87, 0x6d, 0x6f, 0x1b, 0x24, 0x53, 0xcf, 0x0c, 0xa3, 0x6d, 0xc5, 0xc9, 0x05, 0xed, 0x9a, 0xee, 0xd7, 0x82, 0x18, 0xfd, 0x35, 0xb9, 0x8a, 0x58, 0x2c, 0xae, 0x44, 0x73, 0x15};

char charArray[64]; // 32字节的uint8_t数组转换为64字节的char数组

for (int i = 0; i < 32; i++) {
    snprintf(&charArray[2 * i], 3, "%02x", out[i]);
}

// 输出char数组
for (int i = 0; i < 64; i++) {
    printf("%c", charArray[i]);
}
#include <stdio.h>
#include <stdint.h>

int main() {
    uint8_t out[32] = {
        0x4d, 0xce, 0x9b, 0x87, 0x6d, 0x6f, 0x1b, 0x24, 0x53, 0xcf, 0x0c, 0xa3, 0x6d, 0xc5, 0xc9, 0x05, 0xed, 0x9a, 0xee, 0xd7, 0x82, 0x18, 0xfd, 0x35, 0xb9, 0x8a, 0x58, 0x2c, 0xae, 0x44, 0x73, 0x15
    };
    char char_array[32];
    for(int i = 0; i < 32; i++) {
        char_array[i] = (char)out[i];
    }
    // 打印转换后的char数组
    for(int i = 0; i < 32; i++) {
        printf("%c ", char_array[i]);
    }
    return 0;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏