Форум: "Основная";
Текущий архив: 2003.12.30;
Скачать: [xml.tar.bz2];
ВнизКаким образом однозначно преобразовать 16 байт в 28 символов ? Найти похожие ветки
← →
GreySerg (2003-12-16 19:25) [0]Каким образом однозначно преобразовать 16 байт в 28 символов ?
Как например функция BinToHex преобразует 16 байт в 32 символа.
Подскажите, Мастера.
← →
Тимохов (2003-12-16 19:29) [1]Блин, ну и вопрос ...
Вот что человек хотел узнать, вот бы понять..
← →
GreySerg (2003-12-16 19:35) [2]объясняю:
функция BinToHex в результате преобразования 16 байт выдаст 32 байта (символа), где каждый байт будет зашифрован 2 символами в диапазоне 0..F, где каждый символ представляет собой 4 бита.
Мне же надо каким-то образом эти 16 байт завернуть в 28 байт .
Ещё не знаю как, но есть предположение кодировать символом 5 битов.
← →
Sha (2003-12-16 19:40) [3]BASE64 endcode/decode
в 22 байта
← →
panov (2003-12-16 19:45) [4]ТАк тебе похоже не байты, а латинские символы надо закодировать?
← →
Anatoly Podgoretsky (2003-12-16 19:47) [5]GreySerg (16.12.03 19:35) [2]
Тоже можно - получится 26 символов
← →
panov (2003-12-16 19:58) [6]Кстати, 16 байт в 28 кодируетсяф до ужаса просто.
1. 16-->32
2. 32-->28
В п.2 32 байта кодируются в 7-битную кодировку.
Всего получается 28 байт.
← →
Anatoly Podgoretsky (2003-12-16 20:06) [7]Но по реализации, самое простое Base64
← →
Sha (2003-12-16 20:07) [8]реализацию см. в IdCoder3To4.pas
← →
GreySerg (2003-12-17 15:32) [9]в Base64 ипользуется 7-битная кодировка
а 7-битная кодировка не подойдёт, т.к. в 128 символов используемых для кодирования будет #0, #13 и #10, что нехорошо
так что придётся брать 5-битную кодировку , со своей таблицей
← →
REA (2003-12-17 15:44) [10]А зачем, если не секрет? Т.е. наверно можно и в 5 бит засунуть и сжать и т.п. А зачем?
← →
GreySerg (2003-12-17 15:54) [11]затем, что надо гененерить GUID , а затем эти 16 байт преобразовывать к символьному виду , но чтобы они умещались в 28 байт (символов), т.к. этот GUID будет использоваться для создания таблиц в Oracle , а в Oracle есть ограничение на длину имени таблицы - 30 символов (2 символа хочу использовать на префикс)
← →
Amoeba (2003-12-17 16:14) [12]В текстовом представлении есть 4 дефиса, так удаляй (на уникальность это не влияет, т.к. их местоположение фиксированное) их, и будет тебе счастье.
← →
Anatoly Podgoretsky (2003-12-17 16:20) [13]GreySerg (17.12.03 15:32) [9]
Не изобратай то чего нет, почему ты думаешь в названии 64?
А так тебе дали три решения в 22, 26 и 28 бит
← →
Anatoly Podgoretsky (2003-12-17 16:22) [14]Пардон не бит, а символов (печатных, исключительно английских)
← →
REA (2003-12-17 16:23) [15]Сдается мне, что из реляционной базы что-то не то делают. Гуид в название таблицы. Хм.
← →
GreySerg (2003-12-17 16:40) [16]>Amoeba ©
я же объяснил, почему мне надо не 32 символа (что есть текстовое представление без 4 дефисов), а не больше 28
> Anatoly Podgoretsky ©
приведённые решения в 22 и 28 бит не годятся , так как используется 7-битовая кодировка из 128 ASCII символов , куда входят и символы #0,#13, #10 и т.д. (что мне не надо для генерации имени таблицы)
← →
GreySerg (2003-12-17 16:42) [17]>REA
всё нормальное делается с базой
просто нужно уникальное имя таблицы , что с успехом делает GUID.
← →
GreySerg (2003-12-17 16:43) [18]> Anatoly Podgoretsky ©
почему ты думаешь в названии 64?
не понял этого вопроса ?
← →
Anatoly Podgoretsky (2003-12-17 17:23) [19]REA © (17.12.03 16:23) [15]
Нормальное решение, в MSSQL сделано на уровне СУБД
GreySerg (17.12.03 16:40) [16]
Ты бы все таки прежде разобрался с область знания
← →
GreySerg (2003-12-17 18:37) [20]>Anatoly Podgoretsky ©
с областью знаний всё нормально
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.12.30;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c