powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Разбираем массив байтов типа Object
24 сообщений из 49, страница 2 из 2
Разбираем массив байтов типа Object
    #39777734
mozgen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
=)
Спасибо за подсказку. Но что такое сериализация я знаю, я не понял почему
Petro123Вы изобрели сериализацию?
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39777737
mozgen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
При всем уважении, вопрос и был в
Petro123и читаете стрим с байтами.

Как это сделать-то?
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39777738
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mozgenИзопропил,
Куда записывают? в массив? - понятия не имею. По сути, у меня в ту логику и доступа-то нет...
Значит прочитать нужно неизвестно что?
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39777739
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mozgenPetro123,
При всем уважении, вопрос и был в
Petro123и читаете стрим с байтами.

Как это сделать-то?я код выше дал
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39777746
mozgen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Хорошо, давай конкретизирую: каким образом мне из потока последовательно вычленять данные в различных форматах?
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39777765
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mozgenPetro123,
Хорошо, давай конкретизирую: каким образом мне из потока последовательно вычленять данные в различных форматах?
Petro123
Код: c#
1.
Далее BinaryReader(stream


Непонятно?
Начните писать. Хотя бы 5 минут.
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39777767
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>mozgen, сегодня, 10:08 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1309411&msg=21817055][21817055]
>Хорошо, давай конкретизирую: …
<Попробуй так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
  public static class бом {
    public static MemoryStream xms      = null;
    public static byte[] xbb            = null;
    . . . 
    //-- Бинарная сериализация объекта 
    //-- вход:	object
    //-- выход:	xms <-- байтовое представление объекта
    //=========================================================
   public static bool binSerObject(object obj) {
     try {
       xms=new MemoryStream();
       BinaryFormatter binForm=new BinaryFormatter();
       binForm.Serialize(xms,obj,null);
       xms.Position=0;
       return true;
     }
     catch	{return false;}
   }
   //-- Бинарная десериализация объекта из памяти
   //-- вход: xms <-- байтовое представление объекта
   //-- выход: object
   //=========================================================
   public static object binDeSerObject() {
     try {BinaryFormatter binForm=new BinaryFormatter(); return binForm.Deserialize(xms);}
     catch {return null;	}
   }

   //-- Формируем ??-и байтовое представление string в xms
   //========================================================
   public static void StringToXMS(string st)	{
      st=st.Trim();
      if(st.Length==0) st=" ";
      byte[] bt=UnicodeEncoding.UTF8.GetBytes(st);   //-- byte[] <-- st
      ShortToXMS((short)bt.Length);
      xms.Write(bt,0,bt.Length);
  }
   //-- Восстановление string из xms
   //==========================================================
   public static string xmsToString() {
      int n=xmsToShort();
      byte[]bt=new byte[n];
      xms.Read(bt,0,n);
      return UnicodeEncoding.UTF8.GetString(bt); //-- string <--  byte[]
  }
  . . .
  //-- Формируем 4-х байтовое представление int в xms
  //=================================================
  public static void IntToXMS(int ii){byte[] bt=BitConverter.GetBytes(ii); xms.Write(bt,0,bt.Length);}
  //-- Восстановление int из xms
  //==========================================================
  public static int xmsToInt() {byte[]bt=new Byte[4];xms.Read(bt,0,4); return BitConverter.ToInt32(bt,0);}
  //-- Формируем 8-и байтовое представление long в xms
  //=================================================
  public static void LongToXMS(long ii){byte[] bt=BitConverter.GetBytes(ii); xms.Write(bt,0,bt.Length);}
  //-- Восстановление long из xms
  //==========================================================
  public static long xmsToLong(){byte[]bt=new Byte[8];xms.Read(bt,0,8); return BitConverter.ToInt64(bt,0);}
  . . . 
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39777773
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,
По моему варианту там кода 10 строк и без сериализации.
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39777796
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Petro123, сегодня, 10:52 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1309411&msg=21817091][21817091]
>По моему варианту…
<Так это же здорово, если есть варианты.
Только у нас с Вами несколько разные предпосылки - мне мало сформировать xms, надо и упаковать и шифрануть
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39777812
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Petro123, сегодня, 10:52 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1309411&msg=21817091][21817091]
>По моему варианту…
<Так это же здорово, если есть варианты.
Только у нас с Вами несколько разные предпосылки - мне мало сформировать xms, надо и упаковать и шифрануть
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39777822
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевТак это же здорово, если есть варианты.+1
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39778151
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так и не въехал, в каком виде приходит массив, но если это работает:
Код: c#
1.
byte[] bytesArr = obj;


то все просто.

Код: xml
1.
2.
3.
4.
5.
<Type name="typeA">
  <String name="str" Length="20">
  <Float name="floatVal">
  <Int name="intVal">
 <Type/>


20 байт строка + 4 байта float + 8 байт int = bytesArr.Length должно быть == 32. Или делиться на 32 без остатка - если таких записей в массиве много. Если это правило не исполняется - последняя запись битая или вообще прислали лажу. Возможно на уровне документации, а не байтов.

Код: c#
1.
2.
3.
4.
5.
6.
            var tA = new typeA
            {
                str = BitConverter.ToString(bytesArr, 0, 20), //c начала массива 20 байт
                floatVal = BitConverter.ToSingle(bytesArr, 20), //4 с 20го
                intVal = BitConverter.ToInt32(bytesArr, 24), //8 с 24го
            };
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39778152
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy
Код: c#
1.
BitConverter.ToString


уверен, что именно это требуется?
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39778161
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилAntonariy
Код: c#
1.
BitConverter.ToString


уверен, что именно это требуется?Нет. В VB6 для этого использовал бы CopyMemory, ей пофиг, стринг-не стринг. По дотнетом этим не занимался, но принцип ведь тот же.
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39778202
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy, проще:
Код: c#
1.
2.
3.
4.
string name = reader.ReadString();
string capital = reader.ReadString();
int area = reader.ReadInt32();
double population = reader.ReadDouble();
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39778657
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще проще:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Declare PtrSafe Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Type Type1
    s As String * 20
    f As Double
    i As Long
End Type

Sub test()
    Dim t1 As Type1
    CopyMemory VarPtr(t1), bytesArr, Len(t1)
End Sub


наверняка в c# тоже так можно, только без CopyMemory.
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39778663
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
Операции с памятью, указателями в одно время на историческом пути посчитали опасными, и не приветствуются.
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39778674
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Antonariy, сегодня, 10:25 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1309411&msg=21818502][21818502]
>наверняка в c# тоже так можно…
<Можно
Код: c#
1.
2.
if(бом.binSerObject(xObj)) { 
. . .

Только для чего это надо? Что будешь делать с сериализацией? Иногда удобнее работать с полями.
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39778678
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>Antonariy, сегодня, 10:25 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1309411&msg=21818502][21818502]
>наверняка в c# тоже так можно…
<Можно
Код: c#
1.
2.
if(бом.binSerObject(xObj)) { 
. . .

Только для чего это надо? Что будешь делать с сериализацией? Иногда удобнее работать с полями.Вообще-то тут обратная операция - десериализация в тип.
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39778680
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Antonariy,
Операции с памятью, указателями в одно время на историческом пути посчитали опасными, и не приветствуются.прям боюсь-боюсь
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39778696
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyPetro123Antonariy,
Операции с памятью, указателями в одно время на историческом пути посчитали опасными, и не приветствуются.прям боюсь-боюсьпротив ветра, оно знаешь,.....))))
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39778702
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Antonariy, сегодня, 11:09 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1309411&msg=21818527][21818527]
>Вообще-то…
<Можно так:
Код: c#
1.
Object xObj=бом.binDeSerObject();


Но с какой целью?
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39778726
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Antonariyпропущено...
прям боюсь-боюсьпротив ветра, оно знаешь,.....))))знаю, галсами.
...
Рейтинг: 0 / 0
Разбираем массив байтов типа Object
    #39779071
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mozgen,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
TestClass GetTestClass(byte[] barray)
        {
            try
            {
                var t = barray;
                using (var ms = new MemoryStream(t))
                {
                    var bf = new BinaryFormatter();
                    return (TestClass)bf.Deserialize(ms);
                }
            }
            catch
            {
                return new TestClass();
            }
        }

        byte[] GetArray(TestClass tclass)
        {
            using (var ms = new MemoryStream())
            {
                var bf = new BinaryFormatter();
                bf.Serialize(ms, tclass);
                return ms.ToArray();
            }
        }
...
Рейтинг: 0 / 0
24 сообщений из 49, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Разбираем массив байтов типа Object
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]