2016-06-20 112 views
0

在C++中,我有两个阵列:C++ 2字节数组计算(字符数组,字符串和整数)

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++进行包装。谢谢!

+0

“我的值(十六进制)是:00 01 A8_”但这些不是字符,你的容器是_characters_的数组,所以你的帖子没有意义。同样通过_combine这两个角色_你的意思是把它们放在一起做一个字符串? –

+0

@tkrn我看不到有256x168维的数组和哪里有十六进制值。 –

+0

我应该说,它是ANSI编码的,它的表示如上所示。 – tkrn

回答

1

如果你想字符串作为两个字符,这会工作:

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

因为+字符串可以处理一个char的运营商。 如果你希望字符串是你需要一些解析炭的实际数值,如

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

你的任务应该是在格式:

<char_pos> = 0x<value>; 

如果你说关于十六进制值。我假设这只是一个错误的问题,否则你会遇到其他问题。

你关心字符串值吗?您可以跳过转换为完全地,如果你做一个字符串...

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

至于转换为字符串Google "string stream",这将让你喜欢的东西执行你正在寻找,然后将其转换为一个什么当你完成了字符串。