C++ 从.bin文件读取4位块

C++ 从.bin文件读取4位块,c++,C++,我有一个.bin文件,其中包含以4位格式存储的像素数据(即每个像素为4位)。如何将数据作为4位读入C程序。Char以8位块读取文件,因此如果我有一个指向文件开头的指针并递增它,它将跳过一个像素。我不知道有哪个处理器允许您以小于一个字节的增量读取文件(尽管一个字节中的位数在某些处理器上有所不同),在C++中,对于大小小于一个字节的块,没有支持。假设一个字节中有8位,则需要读取一个字节,然后将其拆分为两个像素 如果您的读取返回无符号字符c,则 sometype pixel1 = c >>

我有一个.bin文件,其中包含以4位格式存储的像素数据(即每个像素为4位)。如何将数据作为4位读入C程序。Char以8位块读取文件,因此如果我有一个指向文件开头的指针并递增它,它将跳过一个像素。

我不知道有哪个处理器允许您以小于一个字节的增量读取文件(尽管一个字节中的位数在某些处理器上有所不同),在C++中,对于大小小于一个字节的块,没有支持。假设一个字节中有8位,则需要读取一个字节,然后将其拆分为两个像素

如果您的读取返回无符号字符c,则

sometype pixel1 = c >> 4;
sometype pixel2 = c & 0xf;

这可以通过对代码进行适当的更改来解决……也许,由于每个字节有8位,您只能查看字节的1/2?@DrewDormann:当然,如果OP中包含一些代码,您可以指出其中的位置……;)位移位有符号类型时要小心。:)为了简单起见,我将其设置为未签名字符。