Показать сообщение отдельно
  #1 (permalink)  
Старый 26.12.2011, 17:01
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Функция парсинга строки в массив байт.
Понадобилась мне такая функция, но в гугле я её не нашел. С помощью x-yuri мне удалось это сделать:

function parseStrToBuffer (string) {
  var result = [],
  index = 0,
  length = string.length,
  code;

  for (; index < length; index++) {
    code = string.charCodeAt(index);
    if (code <= 0x7f) {
      result.push(code);
    } else if (code <= 0x7ff) {
      result.push(code >>> 6 | 0xc0,
        code & 0x3f | 0x80);
    } else if (code <= 0xffff) {
      result.push(code >>> 12 | 0xe0,
        code >>> 6 & 0x3f | 0x80,
        code & 0x3f | 0x80);
    } else if (code <= 0x1fffff) {
      result.push(code >>> 18 | 0xf0,
        code >>> 12 & 0x3f | 0x80,
        code >>> 6 & 0x3f | 0x80,
        code & 0x3f | 0x80);
    } else if (code <= 0x3ffffff) {
      result.push(code >>> 24 | 0xf8,
        code >>> 18 & 0x3f | 0x80,
        code >>> 12 & 0x3f | 0x80,
        code >>> 6 & 0x3f | 0x80,
        code & 0x3f | 0x80);
    } else if (code <= 0x7fffffff) {
      result.push(code >>> 30 | 0xfc,
        code >>> 24 & 0x3f | 0x80,
        code >>> 18 & 0x3f | 0x80,
        code >>> 12 & 0x3f | 0x80,
        code >>> 6 & 0x3f | 0x80,
        code & 0x3f | 0x80);
    }
  }

  return result;
}

// Test string: ﻰﺠ﷼ﺒ╤Ή
// Result: [ 239, 187, 176, 239, 186, 160, 239, 183, 188, 239, 186, 146, 226, 149, 164, 206, 137 ]
alert(JSON.stringify(parseStrToBuffer(prompt('Enter string'))));


Функция эквивалентна вызову:
new Buffer('string', 'utf8');

в NodeJS.

Правила кодировки UTF8 брал отсюда.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф

Последний раз редактировалось B~Vladi, 26.12.2011 в 18:23.
Ответить с цитированием