stringstream >> uint8_t十六进制? C
发布时间:2020-12-14 02:51:07 所属栏目:Windows 来源:网络整理
导读:我对以下代码的输出感到困惑: uint8_t x = 0,y = 0x4a;std::stringstream ss;std::string a = "4a";ss std::hex a;ss x;std::cout (int)x " " (int)y std::endl;std::cout x " " y std::endl;std::cout std::hex (int)x " " (int)y std::endl;uint8_t z(x);
我对以下代码的输出感到困惑:
uint8_t x = 0,y = 0x4a; std::stringstream ss; std::string a = "4a"; ss << std::hex << a; ss >> x; std::cout << (int)x << " "<< (int)y << std::endl; std::cout << x << " "<< y <<std::endl; std::cout << std::hex << (int)x << " " << (int)y << std::endl; uint8_t z(x); std::cout << z; 上面的输出是: 52 74 4 J 34 4a 4 当我们改变时将第一行替换为: uint16_t x = 0,y = 0x4a; 输出变成: 74 74 74 74 4a 4a ? 我想我明白会发生什么,但我不明白为什么会发生这种情况或我如何防止/解决它.根据我的理解,std :: hex修饰符因为x的类型而在某种程度上被破坏,在技术层面可能不完全正确,但它只是写入它读取的第一个字符. 背景:输入应该是一个十六进制数字的字符串,每对代表一个字节(就像字符串中的位图一样).我希望能够读取每个字节并将其存储在uint8_t中,所以当我遇到这个问题时我正在试验它.我仍然无法确定什么是最好的方法,所以如果你认为我正在做的是低效或不必要的我会很高兴知道为什么.谢谢你的阅读, 解决方法ss >> x 将uint8_t x视为unsigned char. ‘4’的ascii值是(十进制)52.它将字符串“4a”的第一个字符读取到x中,好像x是一个字符.当你将它切换到uint16_t时,它将它视为无符号短整数类型.与y相同. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Windows批处理文件 – 如果窗口标题包含文本,则为taskkill
- windows – NavigationView窗格背景
- 图标 – 如何在Windows上为javafx本机程序包图标设置自定义
- windows – 适用于中型企业的全功能在线备份提供商?
- 同步域内时间方法一:net time
- 用于Windows的Git bash不提示输入密码
- windows-server-2008 – 为什么我不能从win2008 NAT后面连接
- windows – rake资产:预编译不起作用(rails 3.1.1)
- windows系统下,在C#程序中自动安装字体
- 如何从命令行在Windows7上以管理员身份运行命令?