Так выполняется перевод байт в целочисленный тип:
byte[] array_of_bytes = new byte[];
Int16 integer_value = BitConverter.ToInt16(array_of_bytes, 0);
Вопрос: как выполнить такое же преобразование два байта в массие в целочисленное значение?
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;
}
Нужно оперировать ссылочными типами. 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
type
PSmallint = ^Smallint; // в новых версиях Delphi такой тип уже объявлен
var
BytesArray: array of byte;
SmallIntValue: Smallint;
begin
SmallIntValue := PSmallint(@BytesArray[0])^;
end;
Было бы неплохо, для начала, как минимум задать размер массиву байт Setlength(BytesArray, 2), иначе будет ошибка доступа.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости