Как получить доступ к двоичным данным в строке в javascript

Я использую драйвер устройства, который захватывает ввод со считывателя (RFID) и отправляет его в буфер клавиатуры (клавиатурный клин). Захваченные данные могут (и должны) промежуточно преобразовываться с помощью java-скрипта.

Этот javascript обрабатывается в контексте драйвера - к сожалению, javascript получает захваченные «двоичные» данные в переменной DATA типа string.

Вы можете себе представить, что делает javascript: он интерпретирует ввод как unicode и, таким образом, не позволяет вам адресовать байт за байтом в строке - он произвольно изменяется между 1 ... 4 байтами длины в зависимости от значения.

Мне просто нужно преобразовать двоичную строку в удобочитаемый строковый формат: xf9268970 должен читаться как «f9268970». Все, что я пробовал, пока отстой.

Спасибо за любой совет!


person Klaus    schedule 04.05.2012    source источник
comment
Вы фиксируете его в текстовом поле или слушаете нажатия клавиш и записываете значения ASCII?   -  person Diodeus - James MacFarlane    schedule 04.05.2012
comment
У вас есть доступ к источнику драйвера?   -  person Aaron Digulla    schedule 04.05.2012
comment
Нет - нет доступа к источнику драйвера. Это универсальный драйвер для Windows (клавиатурный клин, направляющий COM-ввод на клавиатуру — с преобразованием javascript)   -  person Klaus    schedule 09.05.2012


Ответы (2)


Во-первых, отказ от ответственности. Я не работал с двоичными данными и javascript, но, возможно, это могло бы помочь.

Возможно, вы могли бы перебрать строку и использовать charAt для просмотра каждого символа. Насколько я понимаю, charAt возвращает значение ASCII (не юникод). Таким образом, вместо 4 байтов вы получите 2 байта (?)

var character;
for (var i = 0; i < str.length; i++) {
    character = str.charAt(i);
}

Возможно, эта ссылка укажет вам правильное направление: Plane_%28BMP%29.C2.A0characters" rel="nofollow">ссылка на charAt

person Helgi    schedule 04.05.2012
comment
К сожалению, charAt и длина строки не работают на основе одного символа на код, как вы можете видеть в следующем примере html-страницы — он возвращает length=1, даже если код имеет длину 6 байтов :-( - person Klaus; 09.05.2012

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

person Diodeus - James MacFarlane    schedule 04.05.2012
comment
Как уже было сказано: я не могу повлиять на то, как данные попадают в javascript, поскольку это встроенная в драйвер функция javascript. Я просто понимаю, что читает сканер. -Клаус - person Klaus; 09.05.2012
comment
Поскольку это клавиатурный клин, вы должны иметь возможность подключить прослушиватель клавиш в своем собственном коде JS. Я сделал это с помощью сканера штрих-кода, в котором используется клин для клавиатуры. - person Diodeus - James MacFarlane; 09.05.2012
comment
Вы имеете в виду ключевого прослушивателя в принимающем поле ввода?? Но их много - некоторые на веб-страницах, могут быть даже в ячейке Excel ... так что это может быть неправильным местом для этого! - person Klaus; 09.05.2012
comment
Ключевой слушатель универсален. Это не зависит от фокуса на входе, хотя вы МОЖЕТЕ сделать так, чтобы он выпадал из функции, если элемент ввода не имеет фокуса, просто установив свой собственный флаг. - person Diodeus - James MacFarlane; 09.05.2012
comment
Боюсь, это выходит за рамки моих возможностей...и превышает усилия, которые я готов потратить в т.ч. поддержка, так как этот скорректированный клин должен быть развернут на многих компьютерах, а не только на моем - person Klaus; 09.05.2012