powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / конвертация текстовой строки в бинарный вид
14 сообщений из 14, страница 1 из 1
конвертация текстовой строки в бинарный вид
    #38513830
alexpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. Есть некоторый текст. Как его правильно перевести в бинарный вид средствами PostgreSQL?

'73024122013204324'::text
...
Рейтинг: 0 / 0
конвертация текстовой строки в бинарный вид
    #38513860
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexpcЗдравствуйте. Есть некоторый текст. Как его правильно перевести в бинарный вид средствами PostgreSQL?

'73024122013204324'::text

hmhm а что есть "бинарный вид" в вашем понимании?
...
Рейтинг: 0 / 0
конвертация текстовой строки в бинарный вид
    #38513928
alexpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Строка из 0 и 1. В PostgreSQL есть специальный тип данных (bytea), который позволяет хранить данные неопределенной длины. Визуально такая строка представляется в виде трехциферной восьмиричной последовательности, типа '\\000'...
В процессе обработки информации сформировалась некоторая форма из трех сотен строк (часть - 1 строку - я представил). Ну можно добавить еще разве что '\r'. Простой cast (txt as bytea) не катит. С помощью encode-decode? Есть ли какие-нибудь правила, по которым бинарная строка формируется (добавление нулевого байта и т.д.)? Если можно , опишите
...
Рейтинг: 0 / 0
конвертация текстовой строки в бинарный вид
    #38513946
ORA-12705
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexpcСтрока из 0 и 1. В PostgreSQL есть специальный тип данных (bytea), который позволяет хранить данные неопределенной длины. Визуально такая строка представляется в виде трехциферной восьмиричной последовательности, типа '\\000'...
В процессе обработки информации сформировалась некоторая форма из трех сотен строк (часть - 1 строку - я представил). Ну можно добавить еще разве что '\r'. Простой cast (txt as bytea) не катит. С помощью encode-decode? Есть ли какие-нибудь правила, по которым бинарная строка формируется (добавление нулевого байта и т.д.)? Если можно , опишите

Это? (пример преобразования hex числа - строки, в битовое значение).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
(ags@[local]:5432) 10:31:54 [postgres]  =# select ('x' || substr('202cb962ac59075b964b07152d234b70', 1, 16))::bit(64);
+------------------------------------------------------------------+
|                               bit                                |
+------------------------------------------------------------------+
| 0010000000101100101110010110001010101100010110010000011101011011 |
+------------------------------------------------------------------+
(1 строка)

Время: 1,415 мс

...
Рейтинг: 0 / 0
конвертация текстовой строки в бинарный вид
    #38514504
Фотография Ик!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть для цифровых значений:

select (3::int8)::bit(16);

0000000000000011
...
Рейтинг: 0 / 0
конвертация текстовой строки в бинарный вид
    #38522360
alexpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем. Пробую. Насколько понимаю, необходимо уметь в PostgreSQL представлять десятичные дроби в двоичной системе счисления. Стандартных функций по-видимому нет
...
Рейтинг: 0 / 0
конвертация текстовой строки в бинарный вид
    #38522896
alexpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и все же целое число представить можно, а вещественное?
select (730::int)::bit(16)
select(730.27::float) ????????
...
Рейтинг: 0 / 0
конвертация текстовой строки в бинарный вид
    #38522928
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexpcи все же целое число представить можно, а вещественное?
select (730::int)::bit(16)
select(730.27::float) ????????в бесконечную периодическую двоичную дробь? или с потерей точности до некоторого наперед заданного кол-ва знаков (бит)?
...
Рейтинг: 0 / 0
конвертация текстовой строки в бинарный вид
    #38523572
alexpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В машинное представление - 8 байт. Я написал функцию сам, но мне кажется, что все гораздо проще - должен быть стандартный набор инструментов.
Основные правила перевода:
Самый старший бит - знак числа (0 - число положительное, 1 - отрицательное)
11 разрядов под порядок числа, остальное (52 разряда) под мантиссу.
При этом целая часть переводится в двоичную систему самостоятельно (последовательное деление на 2), и дробная последовательнное умножение на 2.
Затем число нормализуется. Смещение точки влево на 1 разряд есть прибавление к 1023 каждого разряда смещения. Полученное смещение (1023 + разряды) - есть 11-разрядное число порядка. далее последовательно записываются целая часть и оставшиеся разряды дробной. При этом откидывается старший разряд целой части - число нормализовано.
...
Рейтинг: 0 / 0
конвертация текстовой строки в бинарный вид
    #38523581
alexpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще, на удивление postgresql содержит очень бедный набор функций перевода. В документации написано, что bytea - является типом данных для работы с двоичной информацией. Однако это далеко не так. Простое преобразование к этому типу реально не переводит число к двоичному типу.
Странно, но нет функций взаимного перевода типов bit и bytea.
...
Рейтинг: 0 / 0
конвертация текстовой строки в бинарный вид
    #38523589
alexpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ORA-12705, а как 16-ричный код получить?
...
Рейтинг: 0 / 0
конвертация текстовой строки в бинарный вид
    #38523772
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexpcВ машинное представление - 8 байт... Основные правила перевода...float8send, но эта функция не публичная.

alexpcвообще, на удивление postgresql содержит очень бедный набор функций перевода...если понадобилась какая-то функиональность, а никому другому она не нужна, то это является сигналом о том, что выбран неправильный путь.
...
Рейтинг: 0 / 0
конвертация текстовой строки в бинарный вид
    #38523787
alexpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeXa NalBat, тех. Задание не писал. Но выполнять обязан. Функция (утилита), которую Вы назвали написана для PostgreSQL или выполняется на уровне ОС?
...
Рейтинг: 0 / 0
конвертация текстовой строки в бинарный вид
    #38523934
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexpc<> Функция (утилита), которую Вы назвали написана для PostgreSQL или выполняется на уровне ОС?
Код: sql
1.
2.
3.
4.
5.
SELECT float8send (1.234) ,length (float8send (1.234)) , octet_length (float8send (1.234));
-------
SELECT array_agg(get_bit(float8send (1.234),i)),
string_agg(get_bit(float8send (1.234),i)::text,'')
FROM generate_series (0,63) i ;
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / конвертация текстовой строки в бинарный вид
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]