c++实现16进制数转字符串
时间: 2023-09-13 19:02:46 浏览: 51
下面是一个简单的C++代码示例,将16进制数转换为字符串:
```cpp
#include <iostream>
#include <string>
using namespace std;
string hexToString(const string& hex) {
string result;
for (int i = 0; i < hex.length(); i += 2) {
string byte = hex.substr(i, 2);
char chr = (char) (int) strtol(byte.c_str(), NULL, 16);
result.push_back(chr);
}
return result;
}
int main() {
string hex = "48656c6c6f20576f726c64";
string str = hexToString(hex);
cout << str << endl; // 输出 "Hello World"
return 0;
}
```
在上面的代码中,我们使用了 `strtol()` 函数将每个16进制字节转换为对应的字符,并将它们添加到结果字符串中。 请注意,我们使用了 `substr()` 函数来处理字符串中的每个字节。
相关问题
C++ 16进制数转字符串
在C++中,可以使用`stringstream`和`iomanip`库来将16进制数转换为字符串。示例代码如下:
```c++
#include <iostream>
#include <sstream>
#include <iomanip>
int main() {
int hex_num = 0x68656c6c6f20776f726c64;
std::stringstream ss;
ss << std::hex << hex_num;
std::string str = ss.str();
std::cout << str << std::endl;
return 0;
}
```
输出结果为:
```
68656c6c6f20776f726c64
```
如果需要将16进制数转换为字节串,可以使用以下代码:
```c++
#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
int main() {
std::string hex_str = "68656c6c6f20776f726c64";
std::string byte_str;
for (size_t i = 0; i < hex_str.size(); i += 2) {
std::string byte_hex = hex_str.substr(i, 2);
byte_str += static_cast<char>(std::stoul(byte_hex, nullptr, 16));
}
std::cout << byte_str << std::endl;
return 0;
}
```
输出结果为:
```
hello world
```
16进制数字转字符 C++
将16进制数字转换为字符,需要使用C语言中的函数,例如:
```c
#include <stdio.h>
int main() {
char hex[] = "48656c6c6f20576f726c64";
char str[100];
int i, j = 0;
for (i = 0; hex[i] != '\0'; i += 2) {
int num = 0;
if (hex[i] >= '0' && hex[i] <= '9') {
num = hex[i] - '0';
} else if (hex[i] >= 'a' && hex[i] <= 'f') {
num = hex[i] - 'a' + 10;
} else if (hex[i] >= 'A' && hex[i] <= 'F') {
num = hex[i] - 'A' + 10;
}
num *= 16;
if (hex[i+1] >= '0' && hex[i+1] <= '9') {
num += hex[i+1] - '0';
} else if (hex[i+1] >= 'a' && hex[i+1] <= 'f') {
num += hex[i+1] - 'a' + 10;
} else if (hex[i+1] >= 'A' && hex[i+1] <= 'F') {
num += hex[i+1] - 'A' + 10;
}
str[j] = (char)num;
j++;
}
str[j] = '\0';
printf("Hexadecimal: %s\n", hex);
printf("String: %s\n", str);
return 0;
}
```
该程序将16进制字符串转换为ASCII字符串。通过循环遍历16进制字符串中的每个字符,将其转换为十进制数字,然后将其转换为字符。最后,将所有字符组合成一个新的字符串。