c - 如何在 C 中处理位数据

标签 c file encryption bit

在类里面,我的任务是编写一个 C 程序来解压缩文本文件并打印出其中包含的字符。文件中的每个字符由 2 位(4 个可能的字符)表示。

我最近获悉,在所有系统上,一个字节不一定是 8 位,一个 char 不一定是 1 个字节。这让我想知道当我加载 1 个字节时,我到底如何知道从文件中加载了多少位。另外,当没有可以保证一定数量位的数据类型时,我应该如何将加载的数据保留在内存中。

如何在 C 中处理位数据?

最佳答案

一个字节不一定是 8 位。这确实是事实。另一方面,字符被定义为字节 - C 不区分这两者。

但是,您要为其编写的系统几乎肯定具有 8 位字节。在非常非常旧的系统或某些嵌入式系统之外,不同大小的字节基本上不存在。

如果您必须编写适用于多个平台的代码,并且其中一个或多个具有不同大小的字符,那么您可以专门编写代码来处理该平台 - 使用例如CHAR_BIT 确定每个字节包含多少位。

鉴于这是一个类,假设 8 位字节,除非另有说明。重点不是极端的平台独立性,重点是教你一些关于位摆弄的知识(或者可能是位字段,但这取决于你在类里面学到的内容)。

关于c - 如何在 C 中处理位数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7458826/

相关文章:

file - 为什么文本文件应该以换行符结尾?

algorithm - 我们可以在dsp套件tms320c6713中烧写基于labview的算法吗?

c - 多次加倍变量,并将变量的所有迭代加在一起

c - 将结构写入 .dat 文件

c - 按升序排列 3 个数字 - 功能未按预期工作

ios - 音频编解码器加密

cocoa - 在相同加密的情况下更改密文(IV) Cocoa?

c - 用 C 语言实现相同算法的 MIPS 程序

file - 将多个目录中相同类型的所有文件上移一个文件夹

java - 如何在 Java 中将文本文件的整数行分配到 2D 表中?