不往上贴了,就在源码里吧,common/bs.h注意的是,第一次循环,只写当前字节剩余位,先把原数据左移,把空位留在右侧然后把源数据右移,因为需要本次写的数据在左边,把需写的移到最右侧,然后和当前字节按位或,就完成了当前字节的写入。这时要更新i_count还有一些其它信息的记录如果还有数据,进入下一次循环,做同样的操作,第二次循环,i_count与第一次是不一样的。第一次是作为参数传递来的,第二次的i_count,已经不包括第一次写过的了。