Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Функция парсинга строки в массив байт. (https://javascript.ru/forum/project/24335-funkciya-parsinga-stroki-v-massiv-bajjt.html)

dmitriymar 28.12.2011 12:58

Цитата:

Сообщение от Nekromancer
Так что байт в первую очередь это байт, ну как бы логично.

байт это объём информации содержащий 8 бит.-и задача сократить количество байт хранящих этот объём информации.
можно ли сократить количество байт хранящих информацию(запаковка/распаковка) без изменения количества информации -да.архиваторы явный пример. в вопросе была фраза упаковка распаковка. Пример документ вёрд- упакованный/распакованный -разница более чем в два раза

если речь не идёт о 2х конкретных байтах,да и то нужно смотреть возможно или нет
если каждый из байт содержит число до 127-то возможно
если любой число от 128 до 255-то не возможно
дай однозначный ответ исходя из этого-возможно или нет?

Nekromancer 28.12.2011 13:14

dmitriymar,
Ну вот и вы дошли до упоминания бит. А если у меня занято уже 9 бит из 16ти, то видимо нельзя запаковать, да?

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

Было бы у нас в распоряжении хотя 100 байт, можно было бы тогда говорить о каком то алгоритме сжатия.

Отвечая на последний ваш вопрос:
2 байта однозначно упаковать в один невозможно. Возможно упаковать 8 любых бит их этих байт 2х байт. Так как по определению - байт, это 8 произвольных бит, состоящих из единиц и нулей, то в один байт можно упаковать только один байт.

Так доказываются теоремы в математике.

dmitriymar 28.12.2011 13:25

Цитата:

Сообщение от Nekromancer
Так доказываются теоремы в математике.

Явно полез в дебри.
Тем более веб,когда мы знаем что придёт на наш запрос и как работать с этой информацией,Сами задаём форматы,правила.Там где возможны варианты ,однозначности быть не может. Точнее,однозначно будет то,что если правильно задали параметры для задачи и решение согласно этим параметрам-то однозначно получим правильный результат и однозначно будет выигрыш в чём то(зависит не велосипед ли изобретаем,ну и от степени сумашествия гения):)

nerv_ 28.12.2011 13:44

Всем привет) Немного почитал тему, и увидел, что речь в ней идет об архиваторах. Как именно работают их алгоритмы мне не известно, но согласно этой статье LZMA и этому разъяснению Метод сжатия с использованием словаря.
Иными словами, это
Цитата:

Сообщение от Kolyaj
упаковать два байта в один с возможностью дальнейшей распаковки

просто не возможно.

Еще можно вспомнить про хеширование, но оно не позволит решить вышеупомянутую задачу.

Kolyaj 28.12.2011 13:53

Архиваторы умеют архивировать только какое-то подмножество данных. Для любого архиватора можно найти последовательность произвольной длины, которую он не сможет сжать. Т.е. в общем случае сжать два байта в один нельзя. Частное решение именно для двух байт можно было бы послушать, я пока не вижу. Три упаковать в два легче.

dmitriymar 28.12.2011 14:01

Цитата:

Сообщение от nerv_
Немного почитал тему, и увидел, что речь в ней идет об архиваторах

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

dmitriymar 28.12.2011 14:01

Цитата:

Сообщение от Kolyaj
Для любого архиватора можно найти последовательность произвольной длины, которую он не сможет сжать.

также можно найти последовательность какую он сожмёт не в 2 раза а в 15 и более

B~Vladi 28.12.2011 14:11

Цитата:

Сообщение от Kolyaj
Частное решение именно для двух байт можно было бы послушать

Цитата:

Сообщение от dmitriymar
в этом случае можем получить вместо 2 х байт 1 и распаковать их назад без последствий

dmitriymar, так расскажи нам скорее:yes:

dmitriymar 28.12.2011 14:15

Цитата:

Сообщение от B~Vladi
dmitriymar, так расскажи нам скорее

Я не читал первую страницу этой темы.
глянь там ранее. ты когда делаешь аякс запрос и знаешь что придёт текст -ничего не мешает его соответствующе упаковать на сервере и распаковать на клиенте.XHR2 позволяет. вопрос сколько ресов сожрёт
Цитата:

Сообщение от Kolyaj
Частное решение именно для двух байт можно было бы послушать, я пока не вижу. Три упаковать в два легче.

посмотри там выше -для текста -с 2х байт утф8 получаем один -если речь идёт об использовании текстовой информации на 2х языках,при условии что мы знаем какие это языки и ограничиваем набор символов-в пределах разумного
конечно,частично повторяет принцип утф8 с латиницей,но в варианте с русским сокращает объём,да и чарсет у страницы остаётся утф-8-что в плюс.

Nekromancer 28.12.2011 14:21

dmitriymar,
а как распаковать?

Кстати можно при желании и в первом лвле, но всё вопрос.


Часовой пояс GMT +3, время: 12:51.