如何在std::vector<char>存储的原始数据中创建int16_t指针?
问题解决方法
你的代码错误核心是类型不匹配:&Config[18]返回的是char*类型指针,但你试图将其赋值给int16_t类型变量,两种类型完全不兼容,因此编译器报错。
如果想要直接获取指向该位置int16_t数据的指针,且不修改内存中的原始字节,你需要用reinterpret_cast做类型转换——它会让编译器把指定地址的内存直接解释为int16_t类型,不会改变字节内容,完全符合你想要直接操作内存的需求。
正确代码示例:
std::vector<char> Config; // 需确保Config已正确加载文件数据,且长度至少为20字节(18 + sizeof(int16_t)) int16_t* Config_Number = reinterpret_cast<int16_t*>(&Config[18]);
注意事项
- 必须保证
Config的大小足够覆盖从索引18开始的2个字节(int16_t的标准长度),否则会触发越界访问,导致未定义行为。 - 如果配置文件中的
int16_t数据字节序和当前系统字节序不一致(比如文件是大端序、系统是小端序),直接访问会得到错误数值,这种情况需要额外处理字节序转换。
内容的提问来源于stack exchange,提问作者BlastFurnace
相关产品推荐
相关产品推荐

