#include <iostream> #include <sstream> #include <cstdlib> using namespace std; void string_to_hex(ostringstream& oss, string s) { oss.flags(ios::hex | ios::showbase | ios::uppercase); for(size_t i=0; i<s.length(); ++i) oss << static_cast<unsigned long>(s[i]) << ' '; } string hex_to_string(istringstream& iss) { string re; string tmp; unsigned long n; while(iss>>tmp) { n = strtoul(tmp.c_str(), 0, 0); re.push_back(static_cast<char>(n)); } return re; } int main ( ) { cout << "你好,世界!/n"; ostringstream oss(ostringstream::out); string_to_hex(oss, "你好,世界!"); cout << oss.str() << endl; istringstream iss(oss.str()); cout << hex_to_string(iss); return 0; } 关键在类型应该用unsigned long,花了我不少时间才试出来。