Конвертировать IByteBuffer в String в C# - PullRequest
0 голосов
/ 06 января 2020

Я работаю над существующим проектом, который построен с использованием библиотеки DotNetty, в основном сетевой инфраструктуры. Я не очень хорошо знаком с этой платформой, но для быстрого исправления хочу преобразовать значение IByteBuffer в строку.

1 Ответ

1 голос
/ 06 января 2020

IByteBuffer представляет поток двоичных данных различных типов данных, а не строку.

Если вы хотите получить дамп всех байтов в буфере, вы можете использовать ByteBufferUtil.HexDump. Это дает вам строку отдельных байтов в шестнадцатеричном формате. Это полезно для устранения неполадок, если буфер не содержит ожидаемых данных - вы можете go отследить байты данных и найти, где они идут не так.

Если вы хотите интерпретировать байты по-разному, вам действительно нужно знать типы в буфере. Нет универсального c метода, потому что буфер не является информативным (в отличие, например, XML). Если вы пытаетесь быстро взглянуть на строковые данные в буфере, и эти данные закодированы в ASCII, вы можете попробовать что-то вроде этого:

Encoding.ASCII.GetString(byteBuffer.Array)

Само собой разумеется, если только Весь буфер содержит строку ASCII, это приведет к большому количеству мусора. Полезно это или нет, зависит полностью от данных, с которыми вы работаете; если в буфере есть что-то вроде HTTP-запроса, вы, вероятно, хорошо увидите данные. Само собой разумеется, это должно использоваться только для целей отладки - для любого производственного использования вы должны действительно знать структуру буфера явно, а не догадываться об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...