0
在我的項目中有Binary2String()
。Sprintf()錯誤
它很好用很長時間。但是當vec[0] = 255
在sprintf(temp, "%02d ", vec[i]);
上時它拋出異常。
原始代碼,因爲這,
void Binary2String(const vector<unsigned char>& vec, string& result)
{
if(vec.size() == 0)
return;
for(size_t i = 0; i < vec.size(); i++)
{
char temp[4] = {0};
sprintf(temp, "%02d ", vec[i]);
result.push_back(temp[0]);
result.push_back(temp[1]);
result.push_back(temp[2]);
}
}
然後我固定的bug,因爲這,我無法理解的矢量和sprintf()完成。
它有意義嗎? (我是新來的C++。謝謝)所有的
char temp[6] = {0};
sprintf(temp, "%02d ", vec[i]);
result.push_back(temp[0]);
result.push_back(temp[1]);
result.push_back(temp[2]);
result.push_back(temp[3]);
result.push_back(temp[4]);
`%03hhu`將_most_合適的,因爲它不是一個符號類型,它不是`int`大小。 – 2011-01-07 10:05:32