MCPcopy Create free account
hub / github.com/aboutcode-org/scancode-toolkit / decode4to3

Method decode4to3

samples/JGroups/src/S3_PING.java:2221–2277  ·  view source on GitHub ↗

Decodes four bytes from array source and writes the resulting bytes (up to three of them) to destination . The source and destination arrays can be manipulated anywhere along their length by specifying srcOffset and destOffset . This method does not check to

(byte[] source, int srcOffset, byte[] destination, int destOffset)

Source from the content-addressed store, hash-verified

2219 * @since 1.3
2220 */
2221 private static int decode4to3(byte[] source, int srcOffset, byte[] destination, int destOffset) {
2222 // Example: Dk==
2223 if(source[srcOffset + 2] == EQUALS_SIGN) {
2224 // Two ways to do the same thing. Don't know which way I like best.
2225 //int outBuff = ( ( DECODABET[ source[ srcOffset ] ] << 24 ) >>> 6 )
2226 // | ( ( DECODABET[ source[ srcOffset + 1] ] << 24 ) >>> 12 );
2227 int outBuff=((DECODABET[source[srcOffset]] & 0xFF) << 18)
2228 | ((DECODABET[source[srcOffset + 1]] & 0xFF) << 12);
2229
2230 destination[destOffset]=(byte)(outBuff >>> 16);
2231 return 1;
2232 }
2233
2234 // Example: DkL=
2235 else if(source[srcOffset + 3] == EQUALS_SIGN) {
2236 // Two ways to do the same thing. Don't know which way I like best.
2237 //int outBuff = ( ( DECODABET[ source[ srcOffset ] ] << 24 ) >>> 6 )
2238 // | ( ( DECODABET[ source[ srcOffset + 1 ] ] << 24 ) >>> 12 )
2239 // | ( ( DECODABET[ source[ srcOffset + 2 ] ] << 24 ) >>> 18 );
2240 int outBuff=((DECODABET[source[srcOffset]] & 0xFF) << 18)
2241 | ((DECODABET[source[srcOffset + 1]] & 0xFF) << 12)
2242 | ((DECODABET[source[srcOffset + 2]] & 0xFF) << 6);
2243
2244 destination[destOffset]=(byte)(outBuff >>> 16);
2245 destination[destOffset + 1]=(byte)(outBuff >>> 8);
2246 return 2;
2247 }
2248
2249 // Example: DkLE
2250 else {
2251 try {
2252 // Two ways to do the same thing. Don't know which way I like best.
2253 //int outBuff = ( ( DECODABET[ source[ srcOffset ] ] << 24 ) >>> 6 )
2254 // | ( ( DECODABET[ source[ srcOffset + 1 ] ] << 24 ) >>> 12 )
2255 // | ( ( DECODABET[ source[ srcOffset + 2 ] ] << 24 ) >>> 18 )
2256 // | ( ( DECODABET[ source[ srcOffset + 3 ] ] << 24 ) >>> 24 );
2257 int outBuff=((DECODABET[source[srcOffset]] & 0xFF) << 18)
2258 | ((DECODABET[source[srcOffset + 1]] & 0xFF) << 12)
2259 | ((DECODABET[source[srcOffset + 2]] & 0xFF) << 6)
2260 | ((DECODABET[source[srcOffset + 3]] & 0xFF));
2261
2262
2263 destination[destOffset]=(byte)(outBuff >> 16);
2264 destination[destOffset + 1]=(byte)(outBuff >> 8);
2265 destination[destOffset + 2]=(byte)(outBuff);
2266
2267 return 3;
2268 }
2269 catch(Exception e) {
2270 System.out.println(valueOf(source[srcOffset]) + ": " + (DECODABET[source[srcOffset]]));
2271 System.out.println(valueOf(source[srcOffset + 1]) + ": " + (DECODABET[source[srcOffset + 1]]));
2272 System.out.println(valueOf(source[srcOffset + 2]) + ": " + (DECODABET[source[srcOffset + 2]]));
2273 System.out.println(String.valueOf(source[srcOffset + 3]) + ": " + (DECODABET[source[srcOffset + 3]]));
2274 return -1;
2275 } //e nd catch
2276 }
2277 } // end decodeToBytes
2278

Callers 3

decodeMethod · 0.95
writeMethod · 0.95
readMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected