当前位置: 首页 > news >正文

手机网站开发报价如何推广网站运营

手机网站开发报价,如何推广网站运营,传奇sf网站怎么做,wordpress怎么恢复自带主题GZIP是封装了Deflate压缩的格式文件,Deflate使用了无压缩、HuffmanLZ77进行压缩,Huffman包括静态Huffman和动态Huffman。 Java实现了GZIP格式解析,静态Huffman解压缩,CRC32校验 gzip文件格式解析代码: BinaryInputSt…

GZIP是封装了Deflate压缩的格式文件,Deflate使用了无压缩、Huffman+LZ77进行压缩,Huffman包括静态Huffman和动态Huffman。

Java实现了GZIP格式解析,静态Huffman解压缩,CRC32校验

gzip文件格式解析代码:

	    BinaryInputStream bis = new BinaryInputStream(bytes); // 二进制字节流读取类Header header = new Header();  // 读取GZIP headerheader.ID1 = bis.ReadUInt8();  // GZIP ID1header.ID2 = bis.ReadUInt8();  // GzIP ID2header.CM = bis.ReadUInt8();  header.Flag = bis.ReadUInt8();header.Time = bis.ReadUnix32TimeStamp(); header.Xfl = bis.ReadUInt8();header.OS = bis.ReadUInt8();gzip.header = header;Console.printlnf("ID=%xb%xb", header.ID1, header.ID2); // 打印Console.printlnf("CM=%xb", header.CM);Console.printlnf("Flag=%xb", header.Flag);Console.printlnf("MTime=%S", header.Time);Console.printlnf("XFL=%xb", header.Xfl);Console.printlnf("OS=%xb", header.OS);if ( (header.Flag & 0b00001000) != 0) {  // 如果标志位是文件名String filename = bis.ReadCString();Console.printlnf("filename=%S", filename);}else // 其他待实现throw new java.lang.IllegalArgumentException(header.Flag +"");byte[] result ; // 解压后的字节int data_len ;  // 解压前数据长度int crc;        // 程序计算解压后的CRC32(见上篇文章)if (header.CM == 8) { // deflate data_len = bytes.length - bis.GetPosition() - 8;			byte[] data = bis.ReadBytes(data_len);			result = Deflate.uncompress(data);  // 解压缩,返回解压后字节流crc = CRC.CRC32(result); // 计算循环冗余码}else // 待实现throw new java.lang.IllegalArgumentException(header.CM +""); gzip.crc = bis.ReadUInt32(); // gzip文件自身存储的crc32值gzip.isize = bis.ReadInt32(); System.out.println("gzip crc="+ Long.toHexString(gzip.crc) +",calc-crc=" + Integer.toHexString( crc) );

解析结果如下:

显示了GZIP标志、压缩方法、压缩时间、原始文件名、操作系统类型、CRC校验值

GZIP中存储的CRC32值==解压后计算的CRC32值。(0xa93145a2)

Deflate -静态Huffman解压缩:

	// 读取扩展Codeprivate static int ReadExtCode(BitsInputStream bis, int len) {bis.setOrder(BitOrder.LeftIsHigh);return bis.ReadBits(len);}// 读取距离private static int ReadDistance(BitsInputStream bis) {bis.setOrder(BitOrder.RightIsHigh);return bis.ReadBits(5);}// 读取Codeprivate static int ReadCode(BitsInputStream bis) {bis.setOrder(BitOrder.RightIsHigh);int code = bis.ReadBits(7);Integer value = FixHuffmanTable_7.get(code);if (value == null) {int ext = bis.ReadBit();code = (code << 1 | ext);value = FixHuffmanTable_8.get(code);if (value == null) {ext = bis.ReadBit();code = (code << 1 | ext);value = FixHuffmanTable_9.get(code);if (value == -1)throw new java.lang.IllegalArgumentException(code + "");}}return value;}// Deflate解压缩public static byte[] uncompress(final byte[] _input) throws IOException {IntArrayBuffer baos = new IntArrayBuffer();// 位流读取类BitsInputStream bis = new BitsInputStream(_input);int bFinal = bis.ReadBits(1); // 读取Deflate头,0 – 还有后续子块;1 – 该子块是最后一块。int bType = bis.ReadBits(2);  // 读取Deflate头,00 – 不压缩;01 – 静态Huffman编码压缩;10 – 动态Huffman编码压缩;11 – 保留while (true) {if (bType == 0) { // 无压缩int len = bis.ReadBits(16);int nlen = bis.ReadBits(16);assert len + nlen == 65535;throw new java.lang.IllegalArgumentException(bType + "");}else if (bType == 1) { // fixed Huffmanwhile (true) {int value = ReadCode(bis); // 读取Huffman codeif (value >= 0 && value <= 255) // literalbaos.Write(value);else if (value == 256) // 结束标志break ;else if (value >= 257 && value <= 285) {int length = LengthExtraCodeLengthsTable.get(value);int bits = LengthExtraCodeBitsTable.get(value); if (bits != 0) {int ext =  ReadExtCode(bis, bits); // 读取长度length = length + ext; }value = ReadDistance(bis); // 读取距离int distance = DistanceExtraCodeLengthsTable.get(value);bits = DistanceExtraCodeBitsTable.get(value);if (bits != 0) {int ext =ReadExtCode(bis , bits); // 读取距离distance = distance + ext; }// LZ77滑动窗口计算获取量int[] arr = baos.GetInts();int d = arr.length - distance;if (d < 0) {d = 0;length = length + distance - arr.length;}// 读取滑动窗口,写入到结果for (int i=0; i<length; i++) {	int m = arr[ d + i];baos.Write(m);arr = baos.GetInts();}}else throw new java.lang.IllegalArgumentException(value + "");}}else if (bType == 2) { // dynamic huffman 动态Huffman待实现throw new java.lang.IllegalArgumentException(bType + "");}else throw new java.lang.IllegalArgumentException(bType + "");if (bFinal == 1) // 最后一个块break ;}int[] b = baos.GetInts();byte[] result = new byte[b.length];for (int i=0; i<b.length; i++) result[i] = (byte) b[i];return result;

测试结果如下:

将字符串"abcabcabcabcabcabcabcabcabcabcabcabc1111"写入到文件

运行gzip程序压缩(系统程序)

使用Java程序对gzip文件解析并显示解压后的内容。 (gzip使用了静态huffman)。

http://www.mfbz.cn/news/247/

相关文章:

  • 中国网站的建设兰州网络推广公司哪家好
  • 政府网站内容建设管理规范济南网站优化培训
  • 怎么用php作动态网站开发中国广告网
  • 大淘客优惠券网站是怎么做的企业宣传软文范例
  • 南通网站建设项目免费个人主页网站
  • 广州大型网站建设公司图片识别 在线识图
  • 有没有免费建站永久免费开网店app
  • 珠海集团网站建设疫情最新情况 最新消息 全国
  • wordpress旅游网站主题优化大师电脑版官方免费下载
  • 怎样制作专业简历狼雨seo网站
  • 用哪个网站做相册视频文件夹网站快速优化排名排名
  • 家居企业网站建设平台免费创建自己的网站
  • wordpress中文网站模板网站内部seo优化包括
  • 可以做护考题目的网站百度网盘登录
  • 绵阳网站搜索优化播放量自助下单平台
  • wordpress 画图插件seo网站优化培
  • 网站推广外包公司哪家好打开百度网页
  • 上哪里建设个人网站买友情链接
  • 网站页面设计最宽可做多宽软文写作的技巧
  • 单位政府网站建设情况汇报湖北seo关键词排名优化软件
  • 建立网站要怎么做2023疫情第三波爆发时间
  • 东莞建网站的公司国外搜索引擎排名
  • 中电建铁路建设公司网站奶盘seo伪原创工具
  • 河北做网站的如何在百度提交自己的网站
  • 网站美工做的是什么网络做推广公司
  • 做网站接活全流程百度无广告搜索引擎
  • 网站管理与建设总结怎么开个人网站
  • 广州网站制作开发网店营销策划方案
  • wordpress主题收费破解seo搜索引擎优化关键词
  • 胶州企业网站建设网站的seo优化报告