@@ -42,7 +42,7 @@ public final byte[] compress(byte[] str) {
4242 encode (str , len );
4343
4444 final int halfLen = len >> 1 ;
45- final byte [] compressed = new byte [halfLen + (len & 1 ) + (- len >>> 31 ) ];
45+ final byte [] compressed = new byte [halfLen + (len & 1 ) + 1 ];
4646
4747 for (int i = 0 ; i < halfLen ; i ++)
4848 compressed [i ] = (byte ) (str [i << 1 ] << 4 | str [(i << 1 ) + 1 ]);
@@ -60,24 +60,19 @@ public final byte[] compress(byte[] str) {
6060 */
6161 @ Override
6262 public final byte [] decompress (final byte [] compressed ) {
63- final int compressedLen = compressed .length - 1 ;
64-
65- if (compressedLen <= 0 )
66- return new byte [0 ];
67-
68- int cLenMinus = compressed .length - 1 ;
69- final int odd = compressed [cLenMinus ];
70- final int dLen = odd == 1 ? (--cLenMinus << 1 ) + 1 : cLenMinus << 1 ;
63+ int cLen = compressed .length - 1 ;
64+ final int odd = compressed [cLen ];
65+ final int dLen = odd == 1 ? (--cLen << 1 ) + 1 : cLen << 1 ;
7166 final byte [] decompressed = new byte [dLen ];
7267
73- for (int i = 0 , j = 0 ; i < cLenMinus ; i ++) {
68+ for (int i = 0 , j = 0 ; i < cLen ; i ++) {
7469 final byte bite = compressed [i ];
7570 decompressed [j ++] = supportedCharset [(bite & 0xF0 ) >> 4 ];
7671 decompressed [j ++] = supportedCharset [bite & 0x0F ];
7772 }
7873
7974 if (odd == 1 )
80- decompressed [dLen - 1 ] = supportedCharset [compressed [cLenMinus ]];
75+ decompressed [dLen - 1 ] = supportedCharset [compressed [cLen ]];
8176
8277 return decompressed ;
8378 }
0 commit comments