Сохранение UUID в виде строки base64 ⇐ 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; я
Я экспериментировал с использованием 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; я
Мобильная версия