C++的long long 类型转为16进制字符串
时间: 2023-10-15 20:04:05 浏览: 134
可以使用stringstream和iomanip库来实现将long long类型转为16进制字符串,代码如下:
```c++
#include <iostream>
#include <sstream>
#include <iomanip>
int main() {
long long num = 123456789;
std::stringstream stream;
stream << std::hex << num;
std::string hex_string(stream.str());
std::cout << hex_string << std::endl;
return 0;
}
```
输出结果为:`75bcd15`。在代码中,使用了stringstream来将long long类型的数值转换为16进制字符串,其中`std::hex`表示使用16进制输出,`stream.str()`将stringstream中的字符串转换为std::string类型。
相关问题
C++的long long 类型转为16进制字符串 不使用stringstream
可以使用sprintf()函数,和string的拼接来实现将long long类型转为16进制字符串,代码如下:
```c++
#include <iostream>
#include <cstdio>
#include <string>
int main() {
long long num = 123456789;
char hex_str[20];
sprintf(hex_str, "%llx", num);
std::string hex_string("0x");
hex_string += hex_str;
std::cout << hex_string << std::endl;
return 0;
}
```
输出结果为:`0x75bcd15`。在代码中,使用sprintf()函数将long long类型的数值转换为16进制字符串,其中`%llx`表示以16进制输出long long类型的数值。然后将16进制字符串与前缀`0x`拼接成完整的16进制字符串。
string16进制字符串转10进制 C++(可能会超long long int的限制)
如果要转换的16进制字符串比较长,可能会超过 `long long int` 的最大值,可以使用 `boost::multiprecision::cpp_int` 类型来存储结果。`boost::multiprecision::cpp_int` 类型可以支持任意精度的整数运算。
下面是一个示例代码:
```cpp
#include <iostream>
#include <string>
#include <boost/multiprecision/cpp_int.hpp>
int main() {
std::string hex_str = "123456789ABCDEF0123456789ABCDEF";
boost::multiprecision::cpp_int dec_num = boost::multiprecision::cpp_int(hex_str, 16);
std::cout << dec_num << std::endl;
return 0;
}
```
输出结果为:
```
1337006139375926198302055305212431535
```
在上面的代码中,我们使用了 `boost::multiprecision::cpp_int` 类型来存储转换后的结果。构造函数 `boost::multiprecision::cpp_int(hex_str, 16)` 将一个16进制字符串转换为一个 `cpp_int` 类型的整数。