У меня есть клиентский интерфейс, который отправляет двоичные данные, закодированные в 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 к строкам?