2014-04-03 2 views
2

Начнем с того, что у меня есть 0 xp с C++.C++ Добавить байтовое значение в CString как int

У меня есть массив байтов, который заполнен данными.

Пример:

byte 0: 1 
byte 1: 75 
byte 2: 125 
byte 3: 66 
byte 4: 114 
byte 5: 97 
byte 6: 109 

У меня есть CString в C++, который, как предполагается, чтобы получить все байты. Но байты 0-2 должны быть int и байты 3-6 должны быть ASCII-символами.

Когда я прочитал байт и поместить их в CString следующее будет показано:

" K}Bram"

только часть «Брэм» правильно. Вывод должен быть:

"175125Bram" 

У меня есть переключатель индекса массива байт таким образом я могу контролировать байт. Для байт 0-2 я использую следующий код:

receiveStr += "" + (int)buffer[i]); 

Для байт 3-6 я использую следующий код:

if ((buffer[i] >= 0x20 && buffer[i] <= 0x7E) || (buffer[i] == '\r') || (buffer[i] == '\n') || (buffer[i] == '\t')) 
{ 
    receiveStr += buffer[i]; 
} 
else 
{ 
    // Display the invalid character placeholder (square) 
    receiveStr += (char)0x7F; 
} 

Как я могу преобразовать «» первые байты ИНТА-х года?

+0

Um? вы используете 'char'? не unicode? – ikh

ответ

1

Что это значит, когда вы называете «конвертировать в int»? Как это должно выглядеть на выходе? Ваши первые 3 байта уже сохранены как значения int, но его представление по-прежнему является символами ascii.

Если это означало бы строку типа «175125Bram», то решение должно быть, как это

#include <sstream> 

stringstream ss; 
ss << buffer[0] << buffer[1] << buffer[2]; 
receiveStr += ss.str(); 
+0

receiveStr + = ss.str(); невозможно + = что-то C++ не соглашается с ss.str() не может быть добавлено в CString – bram

+0

Тогда вы можете добавить все свои байты в ss только с помощью << operator, затем взять ss.str(). c_str() – INait

+0

Это возвращает строку как «K» Bram » – bram

0

Там же много способов .. Может itoa, нестандартная функция, является наиболее известным один. snprintf/swprintf тоже может быть решение. Им нужен буфер фиксированного размера, но, возможно, вы можете узнать соответствующий размер в этом случае.

В C++ 11 есть std::to_string/std::to_wstring функция. он преобразует числа в std::string/std::wstring.