2016-06-20 6 views
0

In C++, habe ich zwei Arrays:C++ 2 Byte-Array-Berechnungen (char-Arrays, Strings und ganze Zahlen)

char width[2] 
char height[2] 

Meine Werte (hex) sind:

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

Die Abmessungen 256x168 sind. Mir fällt es schwer, die beiden char-Werte zu einer Zeichenkette zu kombinieren und diese Zeichenkette dann in eine "kombinierte" Ganzzahl für spätere Manipulation umzuwandeln.

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

und ...

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

Was mache ich falsch:

Ich habe die ohne Erfolg nach versuchter? Gibt es einen anderen Ansatz? Ich bin ziemlich neu in C++ und wickle meinen Kopf herum C++, der von einem C# Hintergrund kommt. Vielen Dank!

+0

"_My Werte (hex) sind: 00 01 A8_" aber das sind keine Zeichen und Ihre Container sind Arrays von _characters_ also Ihre Post macht keinen Sinn. Auch durch _combine die zwei Charaktere _ meinst du sie einfach nebeneinander stellen, um eine Schnur zu bilden? –

+0

@tkrn Ich sehe nicht, wo es Felder der Dimension 256x168 gibt und wo Hexadezimalwerte zugewiesen sind. –

+0

Ich sollte sagen, es ist ANSI-codiert und seine Darstellung ist wie oben angezeigt. – tkrn

Antwort

1

Wenn Sie die Zeichenfolge als die beiden Zeichen wollen, dies funktionieren würde:

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

seit + Betreiber Zeichenfolge ein Zeichen verarbeiten kann. Wenn Sie die Zeichenfolge zu dem tatsächlichen numerischen Wert des char mögen Sie einige Parsing brauchen würden, wie

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

sollten Ihre Aufgaben im Format:

<char_pos> = 0x<value>; 

wenn Sie sprechen über Hex-Werte. Ich nehme an, das ist nur ein Tippfehler in der Frage, sonst hätten Sie andere Probleme.

Mögen Sie den String-Wert? Sie können die Konvertierung in einen String überspringen komplett, wenn Sie tun ...

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

Wie für Google "string stream" Konvertierung in einen String, was man so etwas, was Sie suchen dann wandelt es in ein ausführen können string wenn du fertig bist.