gpt4 book ai didi

c++ - 比特流解析和字节顺序

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:18:27 25 4
gpt4 key购买 nike

我正在尝试解析比特流,但我无法理解字节顺序。我有一个字节缓冲区,我需要能够读取长度不一的位域,主要是从 1 位到 8 位不等。

我的问题来自字节的字节顺序。当我单步执行调试器时,底部的 4 位似乎位于字节的顶部。也就是说,我希望前两位为 10(它们必须为 10),但是,在使用调试器检查时,比特流中的第一个字节是 0xA3,即 1010 0011。意思是,假设位的顺序是“正确的”,前两位实际上是 11(从右到左读取)。

然而,如果这些位的顺序不正确,应该是 0x3A 或 0011 1010,那么我的前两位是 10。

这让我感到困惑,因为它似乎不是位顺序的问题,MSb 到 LSb/LSb 到 MSb,而是半字节顺序。这是怎么发生的?这似乎就是它从文件中出来的方式。这可能是无效的比特流,但我以前在十六进制编辑器中读取文件时见过这种情况,似乎以“错误”的顺序蚕食。

我只是很困惑,希望得到一些帮助以了解发生了什么。我不经常处理这个级别的事情。

最佳答案

您无需关心位顺序,因为在 C/C++ 中,您无法使用指针算法遍历位。您只能使用与本地机器的位顺序无关的按位运算符来操作这些位。您在 OP 中提到的只是可视化问题。不同的调试器可能会选择不同的方式来可视化字节中的位。这件事没有对错之分。只有偏好。字节顺序真正重要的是什么。

关于c++ - 比特流解析和字节顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30076525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com