开发者

digits in long to base64 characters

开发者 https://www.devze.com 2023-02-04 14:14 出处:网络
I am working on a small task which requires some base64 encoding. I am trying to do it in head but getting lost .

I am working on a small task which requires some base64 encoding. I am trying to do it in head but getting lost .

I have a 13 digit number in java long format say: 1294705313608 , 1294705313594 , 1294705313573

I do some processing with it, bascially I take this number append it with stuff put it in a byte array and then convert it to base64 using:

String b64String = new sun.misc.BASE64Encoder().encodeBuffer(bArray);

Now , I know that for my original number, the first 3 digits would never change. So 129 is constant in above numbers. I want to find out how many chars corresponding to those digits would not change in the resultant base64 string.

Code to serialize long to the byte array. I ignore the first 2 bytes since they are always 0:

bArray[0] = (byte) (time >>> 40);

bArray[1] = (byte) (time >>> 32);

bArray[2] = (byte) (time >>> 24);

bArray[3] = (byte) (time >>> 16);

bArray[4] = (byte) (time >>> 8);

bArray[5] = (b开发者_高级运维yte) (time >>> 0);

Thanks.

Notes: I know that base64 would take 6 bits and make one character out of it. So if first 3 digits do not change in long how many chars would not change in base64. This in NOT a HW assignment, but I am not very familiar with encoding.


1290000000000 is 10010110001011001111111011110010000000000 in binary.
1299999999999 is 10010111010101110000010011100011111111111 in binary.

Both are 41 bits long, and they differ after the first 7 bits. Your shift places bits 41-48 in the first byte, which will always be 00000001. The following byte will always be 00101110, 00101101, or 00101110. So you've got the leading 14 bits in common across all your possible array values, which (at 6 bits per encoded base64 char) means 2 characters in common in the encoded string.


Appears you're on the right track. I think what you want to do is convert a long to a byte array, then convert the byte array to Base64.

How do I convert Long to byte[] and back in java shows you how to convert it to bytes.

0

精彩评论

暂无评论...
验证码 换一张
取 消