![](/img/trans.png)
[英]Java: how to compress a byte[] using ZipOutputStream without intermediate file
[英]How to compress variables in Java using leading zero byte suppression?
前導零字節抑制意味着將刪除整數值的前導零字節,而是存儲已消除的字節數。 例如:假設我們有32位整數,十六進制值00000090
將被編碼為二進制值01110010000
,這里011是指有3零個字節00000090
。
我的問題是如何在Java中實現領先的零字節抑制? 誰能給我一些例子嗎?
在您的示例中,建議將0x00000090
編碼為11位數字0b01110010000
。 您可能知道,Java中沒有11位數據類型,因此“ Java方式”將是不可能的。
我能想到的唯一實現目標的方法是使用單字節數組存儲所有數據,然后在此之上實現零字節抑制算法。 當然,這將消除Java的全部內容,而Java是面向對象的。
如果您嘗試實現某種IntegerZeroByteSuppression
類,那么您的工作將是IntegerZeroByteSuppression
,因為Java中的每個對象總會有幾個字節的開銷,遠遠超過了零字節抑制本身所節省的幾位。
最后,如果您真的需要從中節省一些內存(可疑,但我實際上不知道您在做什么),我建議您在其中找到一種開銷很小甚至沒有開銷的語言其面向對象的功能(例如C ++)或默認情況下實現零字節抑制的語言(?)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.