Однозначно определить IntPtr 4хбайтовым - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. Как точно указать размер IntPtr? Т.е. есть структура, которую считываю из файла, и размер ее должен быть постоянный. При смене разрядности на x64 IntPtr становится 8мибайтовым, соотвественно меняется и размер структуры. Так вот как в структуре объявить intptr так чтоб он всегда был 4 байта? В самой программе можно использовать и 8мибайтовый, но при чтении тоько 4 Теоретически можно чз маршалинг, но я не знаю какой тип выбрать

Решение задачи: «Однозначно определить IntPtr 4хбайтовым»

textual
Листинг программы
  1. using System;
  2. using System.IO;
  3.  
  4. namespace Temp
  5. {
  6.    class Program
  7.    {
  8.       static void Main(string[] args)
  9.       {
  10.          Soma soma1 = new Soma { val1 = (IntPtr)10, val2 = 20, val3 = (IntPtr)30 };
  11.          using(BinaryWriter writer = new BinaryWriter(File.Create("1.bin")))
  12.          {
  13.             writer.Write(soma1.val1.ToInt32());
  14.             writer.Write(soma1.val2);
  15.             writer.Write(soma1.val3.ToInt32());
  16.          };
  17.  
  18.          Soma soma2 = default(Soma);
  19.          using(BinaryReader reader = new BinaryReader(File.OpenRead("1.bin")))
  20.          {
  21.             soma2.val1 = (IntPtr)reader.ReadInt32();
  22.             soma2.val2 = reader.ReadInt32();
  23.             soma2.val3 = (IntPtr)reader.ReadInt32();
  24.          }
  25.       }
  26.    }
  27.  
  28.  
  29.    public struct Soma
  30.    {
  31.       public IntPtr val1;
  32.       public int val2;
  33.       public IntPtr val3;
  34.    }
  35. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы