2015-01-07 2 views
1

Как видно из названия состояний:печати короткой intellegible форма байтового массива

byte[] encrypted = CryptUtils.encrypt(data, key); 

System.out.println(encrypted.length); 
System.out.println(new BigInteger(1, encrypted)); 
System.out.println(Hex.encodeHexString(encrypted)); 
System.out.println(Base64.encodeBase64URLSafeString(encrypted)); 

выходы:

256 
7168009243437822369854296216469732927594459719440755727503201192530003257397163143550783701334794173832880442110749731484646074400131932467256279320823407781569648004807653365193397061746088055905459344661520563977412309879548615096199872078298147648980941323616588222390445048851049622860590706553997636199882023404309651714685195366372945729024803306545341378698784529621539295122723246344789485664483371790124134351446837929993273793110653964164218755076959002468887573158308128829469244818441239599777150957470054497913346467414443384627016093340619366633629652523989548335430064353047141257059570514456595059522 
38c815051cbe7d70b4498cb0899626bfbb42d973025f73ccb7bac5b927a2e5454fd1fff95a0457450039e19c545b88fb5065569e0f60d787d90e7f7701d8db39b2fbcf7500aa3a94b6f0a893a8892b55e0bedeb1cec0ab6adb4bffecd758ccd675ea51d3f090d266adca9e5a72ab0448426585e5ea306eea7f3607cd952a1a7b4a07bceba063ef04fa462c92ebffc65a35850aa37a31a405e98531e52631577e944bc0f22fcae33c9c93d6ff5d384e066a3c8b620abb5019aeeec8143acf74018a7eff33744ac94a6ac1f736a74868986759b24fb66a0274665f70ac5a27e1ab0e983931f3173dcb61610700b743de6a1e85653a2424bba671aa39debc3ed342 
OMgVBRy-fXC0SYywiZYmv7tC2XMCX3PMt7rFuSei5UVP0f_5WgRXRQA54ZxUW4j7UGVWng9g14fZDn93AdjbObL7z3UAqjqUtvCok6iJK1Xgvt6xzsCrattL_-zXWMzWdepR0_CQ0matyp5acqsESEJlheXqMG7qfzYHzZUqGntKB7zroGPvBPpGLJLr_8ZaNYUKo3oxpAXphTHlJjFXfpRLwPIvyuM8nJPW_104TgZqPItiCrtQGa7uyBQ6z3QBin7_M3RKyUpqwfc2p0homGdZsk-2agJ0Zl9wrFon4asOmDkx8xc9y2FhBwC3Q95qHoVlOiQku6ZxqjnevD7TQg 

Есть ли более короткий intellegible формы, чем base64?

Что является самым коротким?

+1

См http://stackoverflow.com/questions/6008047/why-dont-people-use-base128 – gknicker

+1

ли вы абсолютно хотите быть персонажами или делать снимки? –

+0

@ gknicker ok, я понял. –

ответ

1

Кратчайший я нашел basE91, которые вы можете найти в http://base91.sourceforge.net/

+0

Я бы предпочел кодек power-of-two-size, но ваш связанный ответ объясняет и четко разъясняет проблему :) –

1

Кратчайший потребуется некоторое уточнение. Но если мы говорим о его печати (на консоли), мы подразумеваем человекообразные символы.

Человеческий читаемый набор символов, отображаемый на всех терминалах, представляет собой в основном английский алфавит (буквы нижнего и верхнего регистра), цифры плюс некоторые знаки, которые в целом меньше 128. Наибольшая мощность 2, которая меньше 128, 64, который является числом элементов кодировки Base64.

В основном вы хотите представлять байты с набором символов, размер которого равен 2 (поскольку байт представляет собой целое число бит: 8), поэтому преобразование между байтами и индексами отображаемых символов будет легко и быстро.

Использование большего, чем 64 кодовую бы использовать символы, которые не могут быть отображаемым на всех терминалах, или не могут быть использованы в URL-адреса или имена файлов и т.д.

Так Base64 это ваш лучший выбор, если вы хотите быть компактным, читаемым, эффективным и портативным одновременно. Вы можете подумать о Base128, если вы готовы приспособить какую-то мобильность к выигрышу немного более короткого представления.

Обратите внимание, что если вы просто хотите, чтобы он работал с определенными терминалами/приложениями, которые поддерживают определенные диапазоны символов Юникода, вы можете даже отображать 1 байт в качестве одного символа, в этом случае длина текста (символа) будет такой же, как и длина байта или даже больше, 1 символ юникода может представлять 2 байта.

+0

ваш ответ абсолютно правильный, но @gknicker пришел первым :(Кстати, спасибо. –

Смежные вопросы