如何将无符号简短转换为无符号字符并将值存储在字符串中

How to convert unsigned short into unsigned char and store the value in string

本文关键字:无符号 存储 字符串 转换 字符      更新时间:2023-10-16

我正在尝试将未符号的短值转换为无符号char类型,并将结果存储在字符串中。然后再次将字符串转换回无符号字符,以恢复原始的未符号短值。我围绕此转换构成结构。

我已将未签名的简短值转换为字符串。我如何使用未签名的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;

,除非您除以100,否则您将不可能从1,234获得12。类似地,要从5,678获得56,您需要除以100。除以100。所以我看不出您为什么会在字符串中期待" 12"或" 56"。

1234小数为04d2六角形,它及其ff hex给出D2十六进制或210小数。您为什么不期待字符串中的" 210"?

再次,要从1234开始获得12,您需要除以100。要获得1234的34,您需要mod100。因此,要获得预期的输出,您的代码需要看起来像:

#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