(byte[] data)
| 87 | } |
| 88 | |
| 89 | public static String decode(byte[] data) { |
| 90 | StringBuffer sb = new StringBuffer(); |
| 91 | int len = data.length; |
| 92 | int i = 0; |
| 93 | int b1, b2, b3, b4; |
| 94 | while (i < len) { |
| 95 | do { |
| 96 | b1 = base64DecodeChars[data[i++]]; |
| 97 | } while (i < len && b1 == -1); |
| 98 | if (b1 == -1) break; |
| 99 | |
| 100 | do { |
| 101 | b2 = base64DecodeChars |
| 102 | [data[i++]]; |
| 103 | } while (i < len && b2 == -1); |
| 104 | if (b2 == -1) break; |
| 105 | sb.append((char) ((b1 << 2) | ((b2 & 0x30) >>> 4))); |
| 106 | |
| 107 | do { |
| 108 | b3 = data[i++]; |
| 109 | if (b3 == 61) return sb.toString(); |
| 110 | b3 = base64DecodeChars[b3]; |
| 111 | } while (i < len && b3 == -1); |
| 112 | if (b3 == -1) break; |
| 113 | sb.append((char) (((b2 & 0x0f) << 4) | ((b3 & 0x3c) >>> 2))); |
| 114 | |
| 115 | do { |
| 116 | b4 = data[i++]; |
| 117 | if (b4 == 61) return sb.toString(); |
| 118 | b4 = base64DecodeChars[b4]; |
| 119 | } while (i < len && b4 == -1); |
| 120 | if (b4 == -1) break; |
| 121 | sb.append((char) (((b3 & 0x03) << 6) | b4)); |
| 122 | } |
| 123 | return sb.toString(); |
| 124 | } |
| 125 | } |
no test coverage detected