老师们好,
请教一下把下面的数组转成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
要将给定的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]); }