相关文章推荐
想表白的领结  ·  Handler 接收Parcelable ...·  1 年前    · 
酷酷的茶叶  ·  为什么国内学生用 MATLAB 多于 ...·  1 年前    · 
绅士的啤酒  ·  如何通过keytool命令删除已导入证书/别 ...·  2 年前    · 
无聊的汉堡包  ·  软件测试/测试开发 | ...·  2 年前    · 
玉树临风的香菜  ·  获取并计算Excel两列的RMSE(pyth ...·  2 年前    · 
Code  ›  C 语言中将uint8_t 的数组怎么转成char 数组? -
char 数组
https://segmentfault.com/q/1010000043833898
暴走的柿子
1 年前
segmentfault segmentfault
注册登录
问答 博客 标签 活动
发现
✓ 使用“Bing”搜本站 使用“Google”搜本站 使用“百度”搜本站 站内搜索
注册登录
  1. 首页
  2. 问答
  3. c
  4. 问答详情

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

头像
unme2xgx
27 11
发布于
5 月 26 日
浙江
更新于
5 月 27 日

老师们好,
请教一下把下面的数组转成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

阅读 933
2 个回答
得票 最新
头像
Robot5
17 2
发布于
5 月 27 日
甘肃
✓ 已被采纳

要将给定的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]);
头像
乔治
9.3k 1 1 23
发布于
5 月 26 日
上海
#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数组
 
推荐文章
想表白的领结  ·  Handler 接收Parcelable ArrayList时返回空指针_getparcelablearraylistextra 空指针-CSDN博客
1 年前
酷酷的茶叶  ·  为什么国内学生用 MATLAB 多于 Mathematica? - 知乎
1 年前
绅士的啤酒  ·  如何通过keytool命令删除已导入证书/别名? - 问答 - 腾讯云开发者社区-腾讯云
2 年前
无聊的汉堡包  ·  软件测试/测试开发 | web自动化测试-文件上传与弹框处理 - 掘金
2 年前
玉树临风的香菜  ·  获取并计算Excel两列的RMSE(python)_怎么用python求excel两列mae_陈為先的博客-CSDN博客
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号