BitConverter С# в FreePascal/Delphi

198
13 мая 2018, 02:20

Так выполняется перевод байт в целочисленный тип:

byte[] array_of_bytes = new byte[];
Int16 integer_value = BitConverter.ToInt16(array_of_bytes, 0);
  • Int16 - С#
  • Smallint - Pascal

Вопрос: как выполнить такое же преобразование два байта в массие в целочисленное значение?

Answer 1
public static int[] GetIntArrayFromByteArray(byte[] byteArray)
    {
        int[] intArray = new int[byteArray.Length / 4];
        for (int i = 0; i < byteArray.Length; i += 4)
          {
            intArray[i / 4] = BitConverter.ToInt32(byteArray, i);
          }
        return intArray;
    }
Answer 2

Нужно оперировать ссылочными типами. http://tipidannih.narod.ru/ssilochnij.htm

Можно так, используя ссылочные типы

 type PSmallint = ^Smallint; // обьявляем ссылочный тип
 var array_of_bytes : ^byte;
     array_of_integers : Smallint; // Аналог Int16 

 Begin
   array_of_bytes =   GetMem(10 ); // указать ваш размер, или как-то получить.
   array_of_integers  =  PSmallint (@array_of_bytes[0])^; // Берём адрес, кастим к ссылочному типу, и домиком берём данные по адресу как int 16-битный
 end
Answer 3
type
  PSmallint = ^Smallint; // в новых версиях Delphi такой тип уже объявлен
var
  BytesArray: array of byte;
  SmallIntValue: Smallint;
begin
  SmallIntValue := PSmallint(@BytesArray[0])^;
end;

Было бы неплохо, для начала, как минимум задать размер массиву байт Setlength(BytesArray, 2), иначе будет ошибка доступа.

READ ALSO
Программная загрузка компонентов в winforms

Программная загрузка компонентов в winforms

У меня на winforms форме есть несколько TabControl с несколькими вкладкамиПроблема в том, что элементы на них не прогружаются, пока ты сам не откроешь...

213
скроллинг в DevExpress.XtraGrid

скроллинг в DevExpress.XtraGrid

Помогите разобраться со скроллингом в DevExpressXtraGrid

211
save memory stream as file [требует правки]

save memory stream as file [требует правки]

I get file from server as a byte[] arrayHow can i convert this array to file (it may be any MIME type) and save it in cache dir with corresponding file type?

135
An unhandled exception of type &#39;System.StackOverflowException&#39; occurred

An unhandled exception of type 'System.StackOverflowException' occurred

Помогите пожалуйста понять, почему у меня следующая ошибка:

217