- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从小端格式的文件中一次读取 8 位,我想我的 cpu 也是小端格式,所以我不需要担心字节序,对吧?
我正在读取的是来自 RAW12 文件的 RGGB CFA 的数字、强度值。
这是我的代码 -
uint8_t first8bits, second8bits, third8bits;
file.read((char*)&first8bits, sizeof(uint8_t));
file.read((char*)&second8bits, sizeof(uint8_t));
file.read((char*)&third8bits, sizeof(uint8_t));
Red_channel = (first8bits) << 4 | (second8bits & 0xF0) >> 4;
Green_channel = (second8bits & 0x0F) | (third8bits);
我看到其他人将它以 8 位读入一个字符数组,然后将其转换为一个数字,我该怎么做?由于我正在测试代码的机器是小端,我认为我不需要进行字节交换但是如果其他人在大端机器上测试这段代码怎么办,我如何在运行时找到机器是小端还是大端?
如有任何帮助,我将不胜感激。
最佳答案
如果你在 posix 平台上,你可能有 <endian.h>
与那些函数一起 http://man7.org/linux/man-pages/man3/htole32.3.html提供宏定义:__LITTLE_ENDIAN
, __BIG_ENDIAN
, __BYTE_ORDER
(可能包含在 glib/types.h 或 bits/types.h 中)
所以你可以使用预处理器
#if __BYTE_ORDER == __LITTLE_ENDIAN
定义模板或类型,如果需要,这些模板或类型会导致一个或另一个操作。 Endiannes 意味着您必须注意:a) 字节顺序 b) 结构中位字段的顺序。 Big endian 匹配字节的“网络”顺序,但对于位字段,在 little endian 平台上第一个定义的字段是最不重要的,而在 big endian 上是最重要的。从技术上讲,这不是由标准定义的,但此顺序已被 Linux 和其他操作系统的内核代码“规范化”。
如果您使用的是 Windows,那么您使用的是小端平台。在 ARM 和 MIPS 上,事情要复杂得多,因为 CPU 实际上可以在一定程度上切换其字节顺序。这就是那些库函数确实存在的原因。
位移位操作允许忽略顺序,如果您记住位移位操作会自动将其操作数提升为 int
,则可以使用它。 .
关于c++ - 一次读取 8 位小端文件并对其执行二进制操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55369412/
我正在尝试在 Raspberry Pi(使用 C 编程)和 Arduino(使用 Arduino IDE)之间发送和接收数据。 根据我在互联网上可以找到的内容,它指出两者都是小端格式。 我在 teun
考虑这段代码: int a=0x10000001; char b; b=(char)a; printf("%#x \n",b); 在我的 PC 上它打印 0x01,我并不感到惊讶。它在 BIG END
我需要你的帮助。我想使用以下代码,因为我正在开发一个音频工具(仅适用于 .wav 文件),其主要功能是显示信号波形。大端和小端是我无法控制的元素。我认为以下代码解决问题的方式是正确的:- 如果音频文件
我有一个十六进制字符串,其内容为18000000,该字符串采用主机字节顺序(小端),我需要将其转换为网络字节顺序(大端)。生成的十六进制字符串将为 00000018。 总而言之,我需要转换180000
我有一个十六进制字符串,其内容为18000000,该字符串采用主机字节顺序(小端),我需要将其转换为网络字节顺序(大端)。生成的十六进制字符串将为 00000018。 总而言之,我需要转换180000
我有一个整数列表,比如说 L,它包含一个数字的二进制表示。列表L中的每个整数可以是0或1。“最低有效位”在左边(不是在右边)。 示例:1000001111 代表(十进制)数字 961,或 011101
我有来自实验的Base64 编码数据。所以我想逐步做的是: 从 base64 编码中检索字节(解码) 将字节转换为小端 从 (zlib) 中解压字节 字节数组转 float 组 示例: Dn3LQ3n
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
解码字节时,binary.Read()要求您指定该操作的预期字节顺序。 binary.Read() 还允许您传入结构,但据我所知,它使用相同的字节顺序将字节流解码到结构中的每个字段中。 当编码整数的字
我将 24 位单声道音频 .wav 文件读入 > 7) * 255 data = a.view('
我正在解码一个二进制文件,它有用四个字节表示的十进制数字,小端。例如,94 53 F0 40代表 7.510202。不幸的是,Python 给了我 7.51020240784。 当我尝试使用 unpa
这种传输语法中的数据是如何组织的?来自标准的描述: This Transfer Syntax applies to the encoding of the entire DICOM Data Set.
我是一名优秀的程序员,十分优秀!