Сохранение UUID в виде строки base64JAVA

Программисты JAVA общаются здесь
Ответить
Гость
 Сохранение UUID в виде строки base64

Сообщение Гость »


Я экспериментировал с использованием UUID в качестве ключей базы данных. Я хочу занимать как можно меньше байтов, сохраняя при этом представление UUID удобочитаемым для человека.

Я думаю, что я сократил его до 22 байтов, используя base64 и удалив некоторые конечные "==", которые, похоже, не нужны для хранения для моих целей. Есть ли какие-либо недостатки в этом подходе?

По сути, мой тестовый код выполняет ряд преобразований, чтобы преобразовать UUID в 22-байтовую строку, а затем преобразует его обратно в UUID.

import java.io.IOException; импортировать java.util.UUID; общественный класс UUIDTest { public static void main(String[] args){ UUID uuid = UUID.randomUUID(); System.out.println("Строка UUID: " + uuid.toString()); System.out.println("Количество байтов: " + uuid.toString().getBytes().length); Система.out.println(); byte[] uuidArr = asByteArray(uuid); System.out.print("Массив байтов UUID: "); for(байт b: uuidArr){ System.out.print(b +" "); } Система.out.println(); System.out.println("Количество байтов: " + uuidArr.length); Система.out.println(); пытаться { // Преобразуем массив байтов в строку base64 String s = new sun.misc.BASE64Encoder().encode(uuidArr); System.out.println("Строка UUID Base64: " +s); System.out.println("Количество байтов: " + s.getBytes().length); Система.out.println(); Строка обрезана = s.split("=")[0]; System.out.println("Строка UUID Base64 обрезана: " +обрезана); System.out.println("Количество байтов: " + Trimmed.getBytes().length); Система.out.println(); // Преобразуем строку base64 в массив байтов byte[] backArr = новый sun.misc.BASE64Decoder().decodeBuffer(обрезанный); System.out.print("Вернуться к массиву байтов UUID: "); for(байт b: backArr){ System.out.print(b +" "); } Система.out.println(); System.out.println("Количество байтов: " + backArr.length); байт[] фиксированныйArr = новый байт[16]; for(int я= 0; я> 8 * (7 - i)); } для (int я = 8; я >> 8 * (7 - i)); } возвратный буфер; } общедоступный статический UUID toUUID(byte[] byteArray) { длинный старший бит = 0; длинный младший бит = 0; для (int я = 0; я
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»