我有一个字符串,代表base64中的值。我想将此字符串从base64转换为十六进制。我在Ubuntu 10.10上使用C++。我有以下代码:如何将base64字符串转换为C++中的十六进制字符串?
std::string ssir = "DNQwSinfOUSSWd+U04r23A==";
std::string dec=(base64_decode(ssir));
std::stringstream ss;
for (int i=0; i<dec.size(); ++i) {
if (i != 0) ss << ':';
ss << std::hex << std::setw(2) << std::setfill('0') << static_cast<unsigned int>(dec[i]);//(int)(dec[i]);
}
std::string res;
res= ss.str();
cout<<"the ress is: "<<res<<std::endl;
结果是:
0C:ffffffd4:30:4A:29:ffffffdf:39:44:ffffff92:59:ffffffdf:ffffff94:ffffffd3:ffffff8a :fffffff6:ffffffdc
这是正确的,除了那些ffffffff。我能做些什么来解决这个问题?如果我想将我的十六进制结果写入std::vector<unsigned char> x
,我该怎么做?
请注意,你称之为“hexa结果”是一个字符串,因此将它存储在`std :: string`中会更有意义。 – ereOn 2011-01-14 08:17:58
重复(昨天是同一个用户):[base 64 string to hexa string](http://stackoverflow.com/questions/4680441/base-64-string-to-hexa-string) – 2011-01-14 08:32:26