【发布时间】:2017-05-15 09:21:59
【问题描述】:
我想将一些信息保存到文本文件(.txt 格式)。为了减小文件大小,我使用一个 16 位二进制数的每一位来表示一些信息。例如,对于一个 16 位二进制数0000 0001 1000 1111,每个位都有其特定的含义。由于任何 ASCII 字符都等于 8 位二进制数,所以我想将我的 16 位数字转换为两个字符并保存:
uint16_t a;
a = 13 << 10 | 1 << 3 | 2;// a is a 16bit binary number
char b, c;
b = (char)(a>>8);
c = (char)a;// convert a to two characters
然后我将 b 和 c 保存到一个文本文件中。稍后阅读文本文件时,我会将这两个字符转换为 16 位二进制数并获取信息。问题是我知道有些 ASCII 字符是不可打印的,所以我想知道是否有什么问题?任何答案将不胜感激!
【问题讨论】:
-
不可打印字符只有在您尝试打印时才会出现问题。或者通过一些只能处理可打印字符的系统运行文件。只要每个人都将文件视为二进制数据(你不应该真正称之为 ASCII ——顺便说一下,它只有 7 位)一切都很好。
-
感谢您的回答!我会将字符保存到 txt 文件中,然后我将使用软件对其进行压缩,例如 winzip。我不确定是否可以这样做。
-
我认为如果你把它称为二进制文件并给它一个不同的扩展名,比如“.bin”,它会避免很多混乱。有什么理由你不能吗?
标签: text-files ascii binaryfiles compression