Как преобразовать unsigned short в unsigned char и сохранить значение в строке - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь преобразовать беззнаковое короткое значение в тип беззнакового символа и сохранить результат в строке. Затем снова преобразуем строку обратно в unsigned char, чтобы получить исходные беззнаковые короткие значения. Я получил структуру вокруг этого преобразования.

Я преобразовал беззнаковые короткие значения в строку. Как вернуть беззнаковое короткое значение с помощью массива unsigned char. Пожалуйста, помогите мне решить эту проблему

unsigned short a=1234;
 unsigned short b=5678;
 std::string str="";
 str+=std::to_string((unsigned char)a & 0xFF);
 str+=std::to_string((unsigned char)(a>>8)& 0xFF);
 str+=std::to_string((unsigned char)b & 0xFF);
 str+=std::to_string((unsigned char)(b>>8)& 0xFF);
 cout<<"String Value: "<<str<<endl;

ожидаемый результат будет "12345678", где a = 1234 b = 5678;

1 Ответ

1 голос
/ 29 июня 2019

Невозможно получить 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...