如何将无符号简短转换为无符号字符并将值存储在字符串中
How to convert unsigned short into unsigned char and store the value in string
我正在尝试将未符号的短值转换为无符号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
相关文章:
- 使用无符号字符数组有效存储内存
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 将无符号字符的向量存储在数组中会给我 std::bad_alloc
- 在 std::vector<无符号字符中存储任意数据的方法>
- 我应该使用无符号字符而不是 int 来存储永远不会大于 255 的值吗?
- 如何将无符号简短转换为无符号字符并将值存储在字符串中
- 将十六进制值存储到 std::vector<无符号字符中>
- 通过无符号 char 别名进行对象访问,加载和存储时会发生什么?
- 为什么双倍可以存储比无符号长长更大的数字
- 如何在位集中存储随机生成的无符号整数
- 将字符串存储在无符号长整型的向量中
- 将无符号int(uint8,16,32)存储在变量中
- 如何以最佳方式将高分辨率图像数据存储在无符号字符*中C++
- 取消引用无符号字符指针并将其值存储到字符串中
- 如何从文件中读取十六进制并将其存储在无符号字符中
- 将 RGB 存储在无符号的 16 位整数中
- 将缓冲区的地址存储为无符号整数;
- BigInt实现-将字符串转换为存储为无符号int的二进制表示
- 提取存储在无符号字符数组中的RSA公钥模数和指数
- 如何在无符号int上使用位标志,以便在其中存储额外的布尔值