C++ Bulild字符串变量,实际上是一个十六进制数
假设我有C++ Bulild字符串变量,实际上是一个十六进制数,c++,string,hex,C++,String,Hex,假设我有string变量: string str1 = "\x11"; 假设我想手动构建这个字符串,意思是,我有: string str2 = "11" 并天真地想做: string str3 = '\x' + "11" 有没有一种方法可以用这样的方式构造str3,即str3==str1?是这样的: std::stringstream ss; ss << (char) 0x11; std::string str3 = ss.str(); std::stringstream-s
string
变量:
string str1 = "\x11";
假设我想手动构建这个字符串
,意思是,我有:
string str2 = "11"
并天真地想做:
string str3 = '\x' + "11"
有没有一种方法可以用这样的方式构造str3,即str3==str1?是这样的:
std::stringstream ss;
ss << (char) 0x11;
std::string str3 = ss.str();
std::stringstream-ss;
ss如果开始时的整数小于256,则只需执行以下操作即可
int small = 17; // 0x11 hex
sanity check here
str[0] = (char)small;
如果你从一个字符串开始
int small = HexToInt("11"); // 0x11 hex, find a HexToInt on the next.
sanity check here
str[0] = (char)small;
@提姆劳:谢谢,修好了。@Martijn-Courtaux,很好用。如果您能用几句话解释第一种方法的工作原理,我会很高兴。嗯,0x11只是一个编译时常量整数。将该字符强制转换为一个字符,并将该字符附加到stringstream。str3始终等于str3
int small = 17; // 0x11 hex
sanity check here
str[0] = (char)small;
int small = HexToInt("11"); // 0x11 hex, find a HexToInt on the next.
sanity check here
str[0] = (char)small;