文本和二进制混合存储

难以避免的,文本会和二进制数据混合在一个文件里,本文讨论多种方案中的一种。以前的博客已经讨论过了,有两套方案:基于文本插入二进制数据;或是基于二进制插入文本。在这里,选前者讨论一下。例如:

以文本开始,\(shift in)len  data\(shift out),结束。

新的转义字符

反斜线加小括号,这是对传统转义字符的扩展。把\n写成\(new line),语义更加明确。例子中的shift in和shift out,是ASCII码里的两个字符。

len使用UTF-8.inf格式

这种格式是对UTF-8的修改,它分为A、B两种模式:

A模式:0*******
B模式:1*******

单独一个A模式,占用1字节,和ASCII码兼容;
AB模式,占用2字节,表达14比特数据;
AAB,3字节,21比特;
……
AAAAAAAAB,9字节,63比特。
在这里,不用它表示字符,而是长度len。

data部分

这部分为len个字节的二进制数。
需要联合len和后边的shift out判断终止。

期待编辑器支持上述格式

在传统的编辑器里,上述内容会显示乱码。所以,期待编辑器能够支持这种文本和二进制混合存储的方案。例如,把二进制部分显示成一个emoji符号,若选择这个符号,还能显示二进制形式的。

举例

2022年的旅游照片=\(shift in) len data \(shift out)

data部分是一张照片,长度为6.87MB,对应地,len=6.87M=6M 890K 901 Byte。用UTF-8.inf格式表示为:
110.1101111010.1110000101
共23比特,使用4字节模式
00000011.00110111.01010111.10000101
0x03 37 57 85

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值