十进制数 -> 十进制字符串
#include <string>
// 转换十进制的数到十进制字符串
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);
十进制数 ->十六进制字符串
#include <string>
// 转换十进制数到十六进制字符串
#include <sstream>
string itohex(unsigned long int num)
{
stringstream ss;
ss << hex << num;
string digit;
ss >> digit;
return digit;
}
十进制数 -> 二进制字符串
#include <string> // std::string
#include <bitset> // std::bitset
std::bitset<16> foo;
std::bitset<16> bar (0xfa2);
std::bitset<16> baz (std::string("0101111001"));
std::cout << "foo: " << foo << '\n';
std::cout << "bar: " << bar << '\n';
std::cout << "baz: " << baz << '\n';
// 输出结果:
foo: 0000000000000000
bar: 0000111110100010
baz: 0000000101111001
foo.size() 返回大小(位数)
foo.count() 返回1的个数
foo.any() 返回是否有1
foo.none() 返回是否没有1
foo.set() 全都变成1
foo.set(p) 将第p + 1位变成1
foo.set(p, x) 将第p + 1位变成x
foo.reset() 全都变成0
foo.reset(p) 将第p + 1位变成0
foo.flip() 全都取反
foo.flip(p) 将第p + 1位取反
foo.to_ulong() 返回它转换为unsigned long的结果,如果超出范围则报错
foo.to_ullong() 返回它转换为unsigned long long的结果,如果超出范围则报错
foo.to_string() // 返回它转换为string的结果
各进制字符串 -> 十进制数
#include <string>
// 转换字符串(十进制,十六进制,二进制)到十进制的数
// base : 10\16\2
int stoi (const string& str, size_t* idx = 0, int base = 10);
long long stoll (const string& str, size_t* idx = 0, int base = 10);
unsigned long stoul (const string& str, size_t* idx = 0, int base = 10);
long int strtol (const char* str, char** endptr, int base);