Невозможно получить 12 из 1234, если вы не разделите на 100. Точно так же, чтобы получить 56 из 5678, вам нужно разделить на 100. Ваш код не делится на 100. Поэтому я могу 'Понятно, почему в строке следует ожидать «12» или «56».
1234 - десятичное число с шестнадцатеричным 04D2, в котором AND с шестнадцатеричным FF дает шестнадцатеричное D2 или десятичное число 210.Почему бы вам не ожидать «210» в строке?
Опять же, чтобы получить 12 из 1234, вам нужно разделить на 100. Чтобы получить 34 из 1234, вам нужен мод 100. Итак, чтобы получить вашожидаемый результат, ваш код должен выглядеть следующим образом:
#include <iostream>
int main()
{
unsigned short a=1234;
unsigned short b=5678;
std::string str="";
str+=std::to_string((unsigned char)(a / 100));
str+=std::to_string((unsigned char)(a % 100));
str+=std::to_string((unsigned char)(b / 100));
str+=std::to_string((unsigned char)(b % 100));
std::cout<<"String Value: "<<str<<std::endl;
}
Строковое значение: 12345678