我使用BinaryWriter.Write()来写入字符串,在msdn中,描述如下:
将带有长度前缀的字符串写入
当前编码中的该流
BinaryWriter,并推进
流的当前位置
根据所使用的编码和
正在写入的特定字符
到溪流。
我认为长度前缀是固定大小的;但实际上它的大小是可变的。
有关此方法如何计算前缀长度的详细信息吗?
前缀使用无符号 LEB128 格式进行编码:http://en.wikipedia.org/wiki/LEB128 http://en.wikipedia.org/wiki/LEB128
基本上,如果长度为 127 或更小,则写入单个字节。如果大于,则设置高位,并写入长度的接下来 7 位。如果仍然没有足够的位(长度为16k或更大),则再次设置高位,并写入另外7位。
因此,将有尽可能多的字节来存储长度,每个字节将有 7 位长度,高位将告诉是否存在另一个长度字节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)