C++实现byte数组转hex字符串
时间: 2023-10-17 13:14:02 浏览: 268
可以使用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++ byte数组转16进制大写字符串
可以使用以下代码将 C++ 中的 byte 数组转换为 16 进制大写字符串:
```c++
#include <iostream>
#include <sstream>
#include <iomanip>
using namespace std;
int main() {
// 假设有一个 byte 数组
unsigned char bytes[] = {0x12, 0x34, 0xAB, 0xCD};
// 将 byte 数组转换为 16 进制大写字符串
stringstream ss;
ss << hex << uppercase << setfill('0');
for (int i = 0; i < sizeof(bytes); i++) {
ss << setw(2) << static_cast<int>(bytes[i]);
}
string hexStr = ss.str();
// 输出结果
cout << hexStr << endl;
return 0;
}
```
输出结果为 `1234ABCD`。
c++ byte字符串转16进制字符串
可以使用stringstream和iomanip库来实现byte字符串转16进制字符串,具体代码如下:
```c++
#include <iostream>
#include <sstream>
#include <iomanip>
using namespace std;
string byteToHexStr(const unsigned char* byte_arr, int arr_len) {
stringstream ss;
ss << hex << setfill('0');
for (int i = 0; i < arr_len; i++) {
ss << setw(2) << static_cast<unsigned>(byte_arr[i]);
}
return ss.str();
}
int main() {
unsigned char byte_arr[] = {0x12, 0x34, 0xAB, 0xCD};
int arr_len = sizeof(byte_arr) / sizeof(byte_arr[0]);
string hex_str = byteToHexStr(byte_arr, arr_len);
cout << hex_str << endl; // 输出 "1234abcd"
return 0;
}
```
阅读全文