Преобразование структуры c# к массиву байт
От: shvchenkoalexey  
Дата: 03.02.10 10:19
Оценка:
имеется код
//структура которую надо преобразовать
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct IMAGE_DATA_DIRECTORY
{
public byte b;
public byte[] b2
}

.....
//преобразовываю так

IMAGE_DATA_DIRECTORY user;
user.b = 1;
user.b4=new byte[]{2,3,4,5,6};



IntPtr SitList;
unsafe
{
SitList = Marshal.AllocHGlobal(Marshal.SizeOf(user));
byte[] buffer = new byte[Marshal.SizeOf(user)];
GCHandle handle = GCHandle.Alloc(buffer, GCHandleType.Pinned);
Marshal.StructureToPtr(user, SitList, false);
Marshal.StructureToPtr(user, handle.AddrOfPinnedObject(), false);
Marshal.Copy(handle.AddrOfPinnedObject(), buffer, 0, buffer.Length);
handle.Free();
}

при этом в buffer заместо массива судя повсему пишется адрес массива
Как сделать так чтобы записывался сам массив?
c# структуры преобразование
Re: Преобразование структуры c# к массиву байт
От: Caracrist https://1pwd.org/
Дата: 03.02.10 10:36
Оценка:
Здравствуйте, shvchenkoalexey, Вы писали:

S>при этом в buffer заместо массива судя повсему пишется адрес массива

S>Как сделать так чтобы записывался сам массив?

Marshaling for Arrays
~~~~~
~lol~~
~~~ Single Password Solution
Re: Преобразование структуры c# к массиву байт
От: Аноним  
Дата: 03.02.10 20:13
Оценка:
Здравствуйте, shvchenkoalexey, Вы писали:

S>Как сделать так чтобы записывался сам массив?


public unsafe struct IMAGE_DATA_DIRECTORY
{
  public byte b;
  public fixed byte b2[2];
}
Re: Преобразование структуры c# к массиву байт
От: ofercinn Россия http:/o-fercinn.livejournal.com
Дата: 04.02.10 12:32
Оценка:
S>//структура которую надо преобразовать
S>    [StructLayout(LayoutKind.Sequential, Pack = 1)]
S>    struct IMAGE_DATA_DIRECTORY 
S>    {
S>        public byte b;
          [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.I1, SizeConst = нужный размер)]
S>        public byte[] b2
S>    }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.