c++ - 如何将 unsigned short 转换为 unsigned char 并将值存储在字符串中
问题描述
我正在尝试将 unsigned short 值转换为 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;
解决方案
除非你除以 100,否则你不可能从 1,234 中得到 12。同样,要从 5,678 中得到 56,你需要除以 100。你的代码不能除以 100。所以我不明白为什么您会期望字符串中有“12”或“56”。
十进制的 1234 是十六进制的 04D2,与十六进制的 FF 进行与运算得到十六进制的 D2 或十进制的 210。为什么你不期望字符串中有一个“210”?
同样,要从 1234 中获得 12,您需要除以 100。要从 1234 中获得 34,您需要 mod 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
推荐阅读
- java - 里亚克。RiakClient 的 MultiDelete 不抛出异常
- node.js - 通过 Axios Ajax Call 和 VueJs 使用 Passportjs Local 进行身份验证
- javascript - 将数据插入引导模式元素
- swift - 使用属性文本设置 setContentOffset
- powershell - 如何从 powershell 脚本中执行“dotnet build”
- ubuntu - 在 Ubuntu 中为 gnu gcc 编译器配置的搜索路径中找不到编译器可执行文件
- c++ - 在 OpenCV 中使用 PCA 进行降维,特征向量的维数错误
- python - python pandas group by float range 给出 typeError
- typescript - 何时使用 types.ts 与 types.d.ts
- android - 折叠工具栏下方的 Android 内容高度