c++ - C4302 reinterpret_cast 从 const _Elem * 截断到 unsigned char
问题描述
嗨收到这条消息,我需要帮助:
严重性代码描述项目文件行抑制状态警告 C4302 'reinterpret_cast':从 'const _Elem *' 截断到 'unsigned char' 第 94 行
严重性代码说明项目文件行抑制状态警告 C4302 'reinterpret_cast':从 'const _Elem *' 截断到 'unsigned char' 行 95
uint16_t Id = 325;
std::stringstream stream;
stream << std::setfill('0') << std::setw(4) << std::hex << Id; //Result: 0145
std::string str1 = stream.str().substr(0, 2); //Result: 01
std::string str2 = stream.str().substr(2, 2); //Result: 45
unsigned char char1 = reinterpret_cast<unsigned char>(("0x" + str1).c_str()); //Wanted result: 0x01
unsigned char char2 = reinterpret_cast<unsigned char>(("0x" + str1).c_str()); //Wanted result: 0x45
unsigned char Mac[6] = { 0x00, 0x1D, 0xE2, 0x03, char1, char2 };
解决方案
你走了很长的路:从一个数字到一个字符串,把它切碎,然后将字符串重新解析为一个数字......
而是使用简单的按位运算:
unsigned char MSB = Id >> 8;
unsigned char LSB = Id & 0xFF;
unsigned char Mac[6] = { 0x00, 0x1D, 0xE2, 0x03, MSB, LSB };
推荐阅读
- kotlin - 总结运算符前后的所有数字登录字符串用户输入
- mysql - Typeorm 多对多关系
- api - OpenAPI 表示具有嵌套属性的对象
- gitlab - 遍历 GitLab CI 管道中的环境
- node.js - 尝试使用 node.js 和 money-legos 在 MakerDAO 上铸造 DAI,出现错误:revert Vat/dust?
- flutter - AndroidAlarmManagerPlus 仅在模拟器中工作
- python - 将 git repo 文件加载到 Tensor flow.load_model() 时出现问题
- jmeter - Jmeter在不同VLAN中分布式测试
- node.js - 无法读取 Namespace.emit 处未定义的属性“事件”
- psql - 通过 psql 进行用户身份验证的问题