Попробуйте это:
std::ostringstream convert;
for (int a = 0; a < key_size_; a++) {
convert << (int)key[a];
}
std::string key_string = convert.str();
std::cout << key_string << std::endl;
ostringstream
класс как струнный строитель. Вы можете добавить в него значения, и когда вы закончите, вы можете вызвать метод .str()
, чтобы получить std::string
, который содержит все, что вы вкладываете в него.
Необходимо добавить значения uint8_t
в int
, прежде чем добавлять их в ostringstream
, потому что, если вы этого не сделаете, это будет относиться к ним как к символам. С другой стороны, если они представляют собой символы, вам необходимо удалить (int)
, чтобы увидеть фактические персонажи.
EDIT: Если массив содержит 0x1F 0x1F 0x1F, и вы хотите, чтобы ваша строка будет 1F1F1F, вы можете использовать std::uppercase
и std::hex
манипуляторов, например:
std::ostringstream convert;
for (int a = 0; a < key_size_; a++) {
convert << std::uppercase << std::hex << (int)key[a];
}
Если вы хотите, чтобы вернуться десятичной и строчной буквы, вам необходимо использовать std::nouppercase
и std::dec
.
Как вы хотите, чтобы ваш 'uint8_t' быть преобразованы: как числа или символы? Например, если 65 станет «65» или «А»? –
Я думаю, что эта ссылка поможет вам http://stackoverflow.com/questions/29298204/three-integers-into-1-string-with-spacebars/29298421#29298421 –
'key' кажется вашим источником данных и данными , Не могли бы вы исправить свой код? –