繁体   English   中英

如何将 unsigned short 转换为 unsigned char 并将值存储在字符串中

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

我正在尝试将 unsigned short 值转换为 unsigned char 类型并将结果存储在字符串中。 然后再次将字符串转换回 unsigned char 以取回原始的 unsigned short 值。我得到了围绕这个转换的结构。

我已将无符号短值转换为字符串。 如何使用无符号字符数组取回无符号短值。请帮我解决这个问题

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 十六进制相加得到 D2 十六进制或 210 十进制。 你为什么不期望字符串中出现“210”?

同样,要从 1234 得到 12,您需要除以 100。要从 1234 得到 34,您需要对 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM