c++中string对象转成十六进制
时间: 2023-08-18 15:09:16 浏览: 53
可以使用C++中的stringstream和iomanip库来实现将string对象转换为十六进制。下面是一个示例代码:
```cpp
#include <iostream>
#include <sstream>
#include <iomanip>
int main() {
std::string str = "Hello world!";
std::stringstream ss;
ss << std::hex << std::setfill('0');
for (auto c : str) {
ss << std::setw(2) << static_cast<int>(c);
}
std::cout << "Hex representation of " << str << " is " << ss.str() << std::endl;
return 0;
}
```
输出结果为:
```
Hex representation of Hello world! is 48656c6c6f20776f726c6421
```
以上代码将string对象中的每个字符转换为其对应的十六进制表示,并将它们连接起来形成一个连续的字符串。
相关问题
C++中base64转十六进制
在C++中,可以使用第三方库进行Base64和十六进制的转换操作。一个常用的库是 `OpenSSL`,它提供了丰富的加密和编码功能。
以下是一个使用 `OpenSSL` 库将Base64字符串转换为十六进制的示例:
```cpp
#include <openssl/bio.h>
#include <openssl/evp.h>
std::string Base64ToHex(const std::string& base64Str) {
BIO* b64 = BIO_new(BIO_f_base64());
BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
BIO* mem = BIO_new(BIO_s_mem());
BIO_push(b64, mem);
BIO_write(b64, base64Str.c_str(), base64Str.length());
BIO_flush(b64);
BUF_MEM* memBuf;
BIO_get_mem_ptr(b64, &memBuf);
std::string hexStr(memBuf->data, memBuf->length - 1);
BIO_free_all(b64);
return hexStr;
}
```
使用示例:
```cpp
#include <iostream>
int main() {
std::string base64Str = "SGVsbG8gV29ybGQ="; // Base64字符串
std::string hexStr = Base64ToHex(base64Str); // 转换为十六进制
std::cout << hexStr << std::endl;
return 0;
}
```
上述示例中,`Base64ToHex` 函数接受一个 Base64 字符串作为输入,并返回相应的十六进制字符串。函数内部使用 `OpenSSL` 中的 `BIO` 对象进行编码转换操作。
请注意,在使用这个示例代码之前,需要确保已正确安装并链接了 `OpenSSL` 库,并在代码中包含了相应的头文件。
c++ 字符串转十六进制
你可以使用`std::stringstream`和`std::hex`来将C++字符串转换为十六进制表示。下面是一个示例代码:
```cpp
#include <iostream>
#include <sstream>
#include <string>
std::string stringToHex(const std::string& input) {
std::stringstream ss;
ss << std::hex << std::uppercase;
for (const auto& ch : input) {
ss << static_cast<int>(ch);
}
return ss.str();
}
int main() {
std::string str = "Hello, World!";
std::string hex = stringToHex(str);
std::cout << "Original string: " << str << std::endl;
std::cout << "Hex representation: " << hex << std::endl;
return 0;
}
```
这个例子中,`stringToHex`函数将输入的字符串逐个字符转换为十六进制表示,并将结果存储在一个`std::stringstream`对象中。然后,通过调用`ss.str()`来获取转换后的十六进制字符串。
输出结果:
```
Original string: Hello, World!
Hex representation: 48656C6C6F2C20576F726C6421
```