Однозначно определить IntPtr 4хбайтовым - C#
Формулировка задачи:
Всем привет. Как точно указать размер IntPtr? Т.е. есть структура, которую считываю из файла, и размер ее должен быть постоянный. При смене разрядности на x64 IntPtr становится 8мибайтовым, соотвественно меняется и размер структуры. Так вот как в структуре объявить intptr так чтоб он всегда был 4 байта? В самой программе можно использовать и 8мибайтовый, но при чтении тоько 4
Теоретически можно чз маршалинг, но я не знаю какой тип выбрать
Решение задачи: «Однозначно определить IntPtr 4хбайтовым»
textual
Листинг программы
using System; using System.IO; namespace Temp { class Program { static void Main(string[] args) { Soma soma1 = new Soma { val1 = (IntPtr)10, val2 = 20, val3 = (IntPtr)30 }; using(BinaryWriter writer = new BinaryWriter(File.Create("1.bin"))) { writer.Write(soma1.val1.ToInt32()); writer.Write(soma1.val2); writer.Write(soma1.val3.ToInt32()); }; Soma soma2 = default(Soma); using(BinaryReader reader = new BinaryReader(File.OpenRead("1.bin"))) { soma2.val1 = (IntPtr)reader.ReadInt32(); soma2.val2 = reader.ReadInt32(); soma2.val3 = (IntPtr)reader.ReadInt32(); } } } public struct Soma { public IntPtr val1; public int val2; public IntPtr val3; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д