C ++ 2字节数组计算(字符数组,字符串和整数)

时间:2016-06-20 14:48:33

标签: c++ string char hex

在C ++中,我有两个数组:

char width[2]
char height[2]

我的值(十六进制)是:

width[0]= 01
width[1] = 00
height[0] = 00   
height[1]= A8

尺寸为256x168。我很难将两个char值组合成一个字符串,然后将该字符串转换为"组合"整数用于以后的操作。

我尝试了以下没有成功:

string sImageWidth = string() + width[0] + width[1];
string sImageHeight = string() + height[0] + height[1];

和......

std::stringstream ssImageWidth;
ssImageWidth << width[0] << width[1];
std::string sImageWidth = ssImageWidth.str();

我做错了什么?还有另一种方法吗?我是一个相当陌生的C ++,并且围绕着来自C#背景的C ++。谢谢!

2 个答案:

答案 0 :(得分:2)

您的作业应采用以下格式:

<char_pos> = 0x<value>;

如果您正在谈论十六进制值。我假设这只是问题上的一个错字,否则你会遇到其他问题。

你关心字符串值吗?如果你这样做,你可以完全跳过转换为字符串...

int H{(height[0] << 8) | height[1]};

至于转换为字符串google "string stream",这将允许您执行类似于您正在寻找的内容,然后在您完成后将其转换为字符串。

答案 1 :(得分:1)

如果你想将字符串作为两个字符,这将起作用:

string sImageWidth = string() + width[0] + width[1];
string sImageHeight = string() + height[0] + height[1];

因为字符串的+运算符可以处理char。 如果您希望字符串具有char的实际数值,则需要进行一些解析,例如

std::string width = std::to_string(static_cast<int>(width[0])) + std::to_string(static_cast<int>(width[1]))