Двоичный файл для преобразования в строку с помощью Google.Protobuf

#c# #visual-studio #type-conversion #protocol-buffers #binaryfiles

#c# #visual-studio #преобразование типов #протокол-буферы #двоичные файлы

Вопрос:

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

 amp;
ns16A086C66661C9   D%  C(0 ¢À
amp;
ns167C0BC683548A €D% €‹C(0 ¢À
amp;
ns16BC3BAF56248CÍ=D%¤pìC(0 ¢À
amp;
ns16A89FBA902317q%¤D%"÷C(0 ¢À
amp;
ns16EC1F720BB5983ó1C%×C(0ž¢À
amp;
ns1690E7C450794F ÀD% €ŠC(0 ¢À
amp;
ns16A408EAB24E2Fš©ED%…‹éC(0 ¢À
amp;
ns16F832E429A2C4 @{D% €ÍC(0 ¢À
amp;
ns160CD74622F0D3
—yD%ÍløC(0 ¢À
amp;
ns16485A3F0BA1D7öˆyD%… ¹C(0ž¢À
amp;
ns16EC35866601D4 @HD% ÀD(0 ¢À
amp;
ns1660F189ED2318  «D%  èB(0 ¢À
amp;
ns16
  

чтобы преобразовать его в строку. Однако я не знаю, как подойти к этому с помощью Google.Библиотека Protobuf.

Это то, что у меня есть сейчас, я, похоже, не могу понять, как проанализировать данные, прочитанные из .txt, и отправить их через Google.Декодер Protobuf??? и получить правильную строку.

 namespace ConsoleApplicationTest
{
    class Program
    {
        static void Main(string[] args)
        {


            byte[] array = File.ReadAllBytes("C:/brokerdata.txt");

            Google.Protobuf.IMessage<string> a = new IMessage<string>();
            Google.Protobuf.MessageParser<a> bb = new MessageParser<a>(() => "");
            bb.ParseFrom(array);

            string s = System.Text.Encoding.UTF8.GetString(array, 0, array.Length);
            Console.Out.WriteLine(s);
            Console.WriteLine("First byte: {0}", array[0]);
            Console.WriteLine("Last byte: {0}", array[array.Length - 1]);
            Console.WriteLine(array.Length);
            //Console.Out.WriteLine(array);
            Console.ReadKey();
                }
         }
}
  

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

1. «Текстовый файл, который находится в двоичном формате» не имеет смысла — это текстовый файл или двоичный? Похоже, что это действительно просто двоичные данные. Что такое a и b здесь? (Вам не нужно создавать свой собственный MessageParser экземпляр.) Неясно, как данные в файле связаны с буферами протокола…

2. @JonSkeet Да, я приношу извинения (отредактирую это), это двоичный файл. A amp; B — это просто заполнители. Я не знал, что для этого мне не нужно было создавать свой собственный MessageParser. Как мне это сделать? Не могли бы вы, возможно, направить меня? Спасибо!

3. Хорошо, у вас есть файл .proto? Где объявлены ваши сообщения? Все еще действительно неясно, что на самом деле должно быть в этом файле или какое это имеет отношение к буферам протокола…

4. @JonSkeet Я спрошу своих коллег и свяжусь с вами! Спасибо за ваш ответ! 🙂