Как преобразовать строку в байтовую строку при использовании protobuf?

#c# #protocol-buffers #protobuf-csharp-port

#c# #буферы протоколов #protobuf-csharp-port #протокол-буферы

Вопрос:

Я хочу преобразовать объект string в байтовую строку.Я пытался использовать байтовую строку.Функция copyFrom() для преобразования, но возвращаемое значение всегда равно «{Google.ProtocolBuffers .Байтовая строка}».Почему? Как я могу сделать?

Функция, которую я использую, выглядит следующим образом.

Результат

Комментарии:

1. байтовый[] массив = кодирование. ASCII. getBytes(ввод);

Ответ №1:

Ваш string файл был успешно преобразован в ByteStream . Если вы видите {Google.ProtocolBuffers .ByteString} в окне просмотра это просто означает, что метод ByteStream не переопределяет ToString метод. Короче говоря, Visual Studio не знает, как отобразить a ByteStream , и поэтому вместо этого просто отображает имя типа.

Тем не менее, существует перегрузка CopyFrom метода, которая позволяет вам напрямую использовать строку:

 var APP_DEF_TEA_KEY = ByteString.CopyFrom("e#>amp;*m16", Encoding.Unicode);
  

Комментарии:

1. Понял! Спасибо за ваш ответ!

Ответ №2:

Согласно документам, Google.ProtocolBuffers.ByteStream требуется кодировка, чтобы знать, как отображать ее содержимое. Используйте ByteStream.ToString(Encoding encoding) или ByteStream.ToStringUtf8() .

Ответ №3:

Вы можете использовать один из методов класса ByteString для преобразования строки в ByteArray ByteString.copyFromUtf8(stringText) .