C++中byte数组如何转string
时间: 2023-09-04 22:15:07 浏览: 239
可以使用字符串函数来将byte数组转换为字符串。以下是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
unsigned char bytes[] = {0x48, 0x65, 0x6c, 0x6c, 0x6f}; // "Hello" in ASCII
char str[sizeof(bytes)] = {0}; // initialize string with null characters
memcpy(str, bytes, sizeof(bytes)); // copy bytes to string
printf("String: %s\n", str); // output the string
return 0;
}
```
输出结果为:
```
String: Hello
```
这里使用了`memcpy`函数将byte数组复制到字符串中。需要注意的是,字符串中必须有足够的空间来存储byte数组的内容。在这个例子中,我们使用了`sizeof`运算符来确定字符串的大小,以确保它足够大。
相关问题
C++实现byte数组转hex字符串
可以使用stringstream库来实现byte数组转hex字符串。
以下是示例代码:
```c++
#include <iostream>
#include <sstream>
#include <iomanip>
using namespace std;
int main()
{
unsigned char bytes[] = {0x12, 0xAB, 0xCD, 0xEF};
stringstream ss;
ss << hex << setfill('0');
for(int i = 0; i < sizeof(bytes); ++i)
{
ss << setw(2) << static_cast<int>(bytes[i]);
}
string hex_str = ss.str();
cout << hex_str << endl;
return 0;
}
```
输出结果为:
```
12abcdef
```
在上面的代码中,我们使用stringstream库创建了一个字符串流对象`ss`,然后通过`hex`标志和`setfill`方法设置输出格式。接着,我们使用一个循环遍历byte数组中的每个元素,并使用`setw`方法设置输出宽度为2,保证输出结果始终为两位十六进制数字。最后,通过`ss.str()`方法获取字符串流中的字符串。
C++中string转byte数组
可以使用string的c_str()函数获得一个指向字符数组的指针,然后使用memcpy函数将字符数组复制到byte数组中。具体实现如下:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
string str = "hello world";
const char* charArray = str.c_str();
int length = str.length();
unsigned char byteArray[length];
memcpy(byteArray, charArray, length);
for(int i = 0; i < length; i++) {
printf("%02x", byteArray[i]);
}
cout << endl;
return 0;
}
```
输出结果为:
```
68656c6c6f20776f726c64
```
其中,68656c6c6f20776f726c64 是 "hello world" 的十六进制表示。
阅读全文