2016-06-20 1 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

«Значения _My (hex): 00 01 A8_», но это не символы, а ваши контейнеры - массивы _characters_, поэтому ваш пост не имеет смысла. Также _combine два символа_ вы имеете в виду просто поставить их рядом друг с другом, чтобы создать строку? –

+0

@tkrn Я не вижу, где есть массивы размера 256x168 и где указаны значения hex. –

+0

Я должен сказать, что он кодируется ANSI, и это представление показано выше. – tkrn

ответ

1

Если вы хотите строку в качестве двух символов, это будет работать:

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

поскольку оператор + строка может обрабатывать полукокс. Если вы хотите, чтобы строка быть фактического числового значения полукокса вам потребуется некоторое синтаксический анализ, как

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", который позволит вам выполнить что-то вроде того, что вы ищете, то преобразовать её в если вы закончите.

Смежные вопросы