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

nerv_ 26.12.2011 19:13

Цитата:

Сообщение от Nekromancer
В utf8 специальная система кодирования, где один символ разбивается на несколько байт.

Цитата:

Сообщение от B@rmaley.e><e
Тогда это будет не 1, а несколько байт.

Ну я Вася :lol: Не знаю почему, но думал что необходимо записать все символы 1 байтом) Всем спасибо!

это все работа так влияет) Когда сидишь с кем-то в одном помещении, и у этого "кого-то" весь день рот не закрывается :-E

B~Vladi 26.12.2011 20:45

Цитата:

Сообщение от nerv_
но думал что необходимо записать все символы 1 байтом

Так в кодировке windows-1251, например. Поэтому она не позволяет кодировать больше 255 символов, так как они не влезут в один байт.

Kolyaj 27.12.2011 10:34

Цитата:

Сообщение от nerv_
Ну я Вася Не знаю почему, но думал что необходимо записать все символы 1 байтом) Всем спасибо!

Отличная задача для собеседования: упаковать два байта в один с возможностью дальнейшей распаковки, разумеется. Если в течение пяти секунд, не скажет, что невозможно -- свободен :)

Gozar 27.12.2011 11:56

Цитата:

Сообщение от Kolyaj (Сообщение 146383)
Отличная задача для собеседования: упаковать два байта в один с возможностью дальнейшей распаковки, разумеется. Если в течение пяти секунд, не скажет, что невозможно -- свободен :)

Есть два типа людей, одни хотят работать, другие хотят устроится на работу. Предпочитаю первых, даже если они не ответят на вопрос вообще.

Nekromancer 28.12.2011 11:06

dmitriymar,
вы о чём? Запаковать 2 байта в один в принципе нельзя, это как 2 + 2 = 10.

dmitriymar 28.12.2011 11:07

Фу,гоню хотел написать что возможно текст,но 4 бита не обеспечат все буквы алфавита даж в нижнем регистре любого из языков всего 16 букв можно передать ими.
Но опять,можно уплотнить слегка-вопрос стоит ли того?
В 5 бит можно упаковать нижний регистр русского или англ. алфавита. Итого, в 5 байт-можем упаковать 8 букв.
компрессия практически в 2 раза.
В 6 бит с указанием регистра-20% ,что совсем не мало для крупных-трафик на 20% уменьшить -ощутимо в сравнении -расходы на разработку/экономия трафа-и очень ощутимо

А в 7 бит можно запаковать и регистр и 2 языка.-экономия с утф8 в два раза при использовании только русского и меньше при совместном использовании русского и англ. 8 бит можем использовать для указания что это число ,конечно здесь можем использовать числа от 0 до 127. но ничего не мешает разбивать крупные числа на более мелкие. Итого, имеем в итоге экономию около 50% трафа-совсем не мало.

Цитата:

Сообщение от Nekromancer
вы о чём? Запаковать 2 байта в один в принципе нельзя, это как 2 + 2 = 10.

Вобще можно,при условии что каждый байт использует не более 4 бит.Побитовые операции в языке есть.Можно вытащить,
но это только для узких задач-допустим все данные это числа от 0 до 15. Каждое из них в представлении обычном представляет один байт,но их возможно упаковать в один байт а затем распарсить.
Так что говорить что невозможно-не стоит. Возможно, если задача позволяет.
Да и опять,если применить чуть более сложную систему,то можно запаковать с компрессией более чем в два раза в общем-так что в принципе можно говорить что возможно иметь на входе н байт -на выходе н/2 и соответственно в обратную сторону.Условия задачи выполнены -значит задача успешно решена)

dmitriymar 28.12.2011 11:42

Цитата:

utf8 специальная система кодирования, где один символ разбивается на несколько байт.
кстати,не всё так просто.
http://otvety.google.ru/otvety/threa...295b834537ed63

Nekromancer 28.12.2011 11:56

Цитата:

Сообщение от dmitriymar
Вобще можно,при условии что каждый байт использует не более 4 бит.

2 + 2 = 10 тоже возможно, при условии, что 2 это 5. Байт в программировании это 8мь бит, и я вроде как не помню устройств где это не так. Вы прибегаете к крайностям.
Цитата:

Сообщение от dmitriymar
кстати,не всё так просто.

На первой странице есть алгоритм. Моё общее утверждение не нужно воспринимать как 100%-ное определение.

dmitriymar 28.12.2011 12:10

Цитата:

Сообщение от Nekromancer
На первой странице есть алгоритм. Моё общее утверждение не нужно воспринимать как 100%-ное определение.

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

dmitriymar 28.12.2011 12:13

Цитата:

Сообщение от Nekromancer
Байт в программировании это 8мь бит, и я вроде как не помню устройств где это не так

были "компы" в 50-60 годах, советская разработка, у каких была логика отличная от привычных 0 и 1 ,соответственно и байт у них другой если вообще был.
http://ru.wikipedia.org/wiki/%D0%A2%...B8%D0%BA%D0%B0


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