C++ 将字节转换回c+中的原始类型(int16、int24、int32、int64等以及32/64位浮点/双精度)+;

C++ 将字节转换回c+中的原始类型(int16、int24、int32、int64等以及32/64位浮点/双精度)+;,c++,integer,double,byte,type-conversion,C++,Integer,Double,Byte,Type Conversion,我目前正在为二进制文件编写自己的简单文件读取器,现在有点卡住了 到目前为止,解析文件、读取文件包含的文件头和数据本身都非常有效,但我目前对如何将数据(现在存储在字符向量中)的字节(big-endian)转换回相应的整数和浮点数有点困惑 我理解这个原理,例如,如果我有一个32位整数,我取四个字符和一个有符号的int32的数据包,将int移位8,添加第一个字符,然后再次移位,添加第二个字符,等等,其他字符也是如此 1) 所以我的第一个问题是,有没有一种快速的方法可以一次对整个向量执行此操作,或者我必

我目前正在为二进制文件编写自己的简单文件读取器,现在有点卡住了

到目前为止,解析文件、读取文件包含的文件头和数据本身都非常有效,但我目前对如何将数据(现在存储在字符向量中)的字节(big-endian)转换回相应的整数和浮点数有点困惑

我理解这个原理,例如,如果我有一个32位整数,我取四个字符和一个有符号的int32的数据包,将int移位8,添加第一个字符,然后再次移位,添加第二个字符,等等,其他字符也是如此

1) 所以我的第一个问题是,有没有一种快速的方法可以一次对整个向量执行此操作,或者我必须对它进行迭代(因为它可以达到数百兆字节)

2) 我的第二个问题是,如何处理24位整数和浮点数?我不太清楚怎么做,和整数的过程一样


致以最良好的祝愿

您是从输入流还是从缓冲区读取要转换的字节?你能给我们看看你现在的代码吗?顺便说一句,你可以看看:@Christophe:我可以添加代码,但这远远落后于从输入流中读取,文件的数据部分存储在向量中,但我可以将其“转换”回流。谢谢你的链接,但是endianness对我来说并不麻烦。