16进制unsigned char*转char*
时间: 2023-06-03 21:05:06 浏览: 122
可以使用memcpy函数将unsigned char*转换为char*,代码示例:
```
unsigned char* hex_str = "54686973206973206120686578616465632e";
char* str = new char[strlen((char*)hex_str) / 2 + 1];
for (int i = 0; i < strlen((char*)hex_str); i += 2) {
sscanf((char*)(hex_str + i), "%2hhx", str + i / 2);
}
str[strlen((char*)hex_str) / 2] = '\0';
```
相关问题
16进制unsigned char转char*
将16进制的unsigned char类型转换为char*类型可以使用sprintf函数,例如:
```
unsigned char hex = 0xAA;
char str[3];
sprintf(str, "%02X", hex);
```
在这个例子中,%02X表示将hex转换为2位16进制数,不足两位补0。最终输出的str为"AA"。
qbytearray10进制数据转16进制unsigned char数组
可以使用以下方法将10进制数据转换为16进制的`unsigned char`数组:
```c++
QByteArray dec_array = QByteArray::number(123); // 10进制数据
QByteArray hex_array = dec_array.toHex(); // 转换为16进制数据
const unsigned char* uchar_array = reinterpret_cast<const unsigned char*>(hex_array.constData()); // 转换为unsigned char数组
```
在上述代码中,首先将10进制数据转换为`QByteArray`类型,然后使用`toHex()`函数将其转换为16进制数据。最后,使用`reinterpret_cast`将转换后的`QByteArray`中的`char`数组表示转换为`unsigned char`类型的指针表示。需要注意的是,`constData()`函数返回的`char`数组表示是以`'\0'`结尾的,因此可以直接用于打印或者传递给其他函数。
阅读全文