У меня есть клиентский интерфейс, который отправляет двоичные данные в кодировке base64. Данные представляют собой 29-байтовую полезную нагрузку в настраиваемом формате, состоящую из байтов, которая описывает событие. 29 байтов состоят из нескольких полей; каждый с уникальной длиной.
Мне нужен сервер для его декодирования, чтобы я мог извлечь поля. Я пробовал использовать объект Buffer, как и в другом случае. случай, когда данные были переданы в шестнадцатеричном формате безуспешно .
buff = new Buffer('AR0AAAEKCgsLDAwAAATSAAAADsgAAAAAAAAAzMQ=', 'base64');
// track the current position
// ... get out to the data portion of the message
var position = 3;
// event type
var event_type = buff.slice(position,(position+3)).toString('utf8');
position += 3;
console.log('... event type: ' + event_type + ' /');
// address
var addr = buff.slice(position,(position+3)).toString('utf8');
position += 3;
console.log('... addr: ' + addr + ' /');
.ToString ('utf8'), вероятно, является основной причиной. Как я могу получить строку, которая представляет желаемые байты в этих вызовах slice ()?
Я не храню двоичные данные на сервере, как это обычно делается с кодировкой base64. Итак, должен ли я перейти от base64 к какой-либо другой кодировке для доступа к отдельным байтам?
Я использовал тот же код в известной текстовой строке, которая закодирована с помощью base64, чтобы проверить базовую логику. Но когда исходные данные перед кодированием являются двоичными, операторы консоли ничего не печатают. Могу ли я перейти от двоичного кода к base64 и к строкам?
... event type: /
или ничего? - person thejh   schedule 23.11.2011