typecast

Преобразуйте тип данных, не меняя базовые данные

Синтаксис

Описание

пример

Y = typecast(X,type) преобразует битовые шаблоны X к типу данных, заданному в type без изменения базовых данных. X должен быть полным, некомплексным, числовым скаляром или вектором.

Примеры

свернуть все

Преобразуйте целое число в беззнаковое целое число того же размера.

X = int16(-1)
X = int16
    -1
Y = typecast(X,'uint16')
Y = uint16
    65535

Покажите битовые шаблоны в шестнадцатеричном представлении. Преобразование типа данных при помощи typecast не изменяет базовые данные.

format hex
X
X = int16
   ffff

Y = typecast(X,'uint16')
Y = uint16
   ffff

Создайте вектор 1 на 4 из 8-битных целых чисел.

X = int8([77 60 43 26])
X = 1x4 int8 row vector

   77   60   43   26

Преобразуйте четыре 8-битных целых чисел, которые используют 4 байта (32 бита) памяти, в число с одной точностью, которое также использует 4 байта памяти.

Y = typecast(X,'single')
Y = single
    3.5411e-23

Покажите битовые шаблоны в шестнадцатеричном представлении. В шестнадцатеричном обозначении 1 байт (8 биты) представлен двумя цифрами. The typecast функция перестраивает битовые шаблоны, не изменяя данные.

format hex
X
X = 1x4 int8 row vector

   4d   3c   2b   1a

Y = typecast(X,'single')
Y = single
   1a2b3c4d

Создайте вектор 1 на 3 из 32-битных беззнаковых целых чисел.

X = uint32([1 255 256])
X = 1x3 uint32 row vector

     1   255   256

Приведение X в 8-битные беззнаковые целые числа с использованием typecast. Каждое 32-битное значение разделено на четыре 8-битных сегмента. Выполнение этого кода на маленькой эндовой системе дает следующие результаты.

Y = typecast(X,'uint8')
Y = 1x12 uint8 row vector

     1     0     0     0   255     0     0     0     0     1     0     0

Третий элемент X256, превышает максимальное значение, которое может иметь 8 биты. Преобразованное значение Y (9), таким образом, переливается в Y (10).

Y(9:12)
ans = 1x4 uint8 row vector

   0   1   0   0

Можно преобразовать Y назад к 32-битным беззнаковым целым числам без изменения базовых данных.

X2 = typecast(Y,'uint32')
X2 = 1x3 uint32 row vector

     1   255   256

Сравните выходные данные typecast и выходы cast чтобы увидеть различие между этими двумя функциями.

Z = cast(X,'uint8')
Z = 1x3 uint8 row vector

     1   255   255

X2 = cast(Z,'uint32')
X2 = 1x3 uint32 row vector

     1   255   255

Приводит целые числа из меньшего типа данных (uint8) в большую (uint16). Используйте шестнадцатеричное представление, чтобы показать перестройку битовых шаблонов. The typecast функция возвращает выход в маленьком эндовом стиле, комбинируя четыре 8-битных сегмента входных данных для получения двух 16-битных сегментов.

format hex
X = uint8([44 55 66 77])
X = 1x4 uint8 row vector

   2c   37   42   4d

Y = typecast(X,'uint16')
Y = 1x2 uint16 row vector

   372c   4d42

Можно преобразовать little-endian выход в big-endian (и наоборот), используя swapbytes функция.

Y = swapbytes(typecast(X,'uint16'))
Y = 1x2 uint16 row vector

   2c37   424d

Входные параметры

свернуть все

Входной массив, заданный как скаляр или вектор.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Новый тип данных, заданный как 'single', 'double', 'int8', 'int16', 'int32', 'int64', 'uint8', 'uint16', 'uint32', или 'uint64'.

Если размер бита type является n в разы больше, чем размер бита каждого элемента X, затем X должно содержать несколько n элементы для преобразования X к типу данных type. В противном случае MATLAB® выдает ошибку.

Совет

  • typecast отличается от MATLAB cast функция в том, что она не изменяет входные данные. typecast всегда возвращает одинаковое количество байтов в выходных Y как в вход X. Для примера приведение 16-битного целого числа 1000 к uint8 с typecast возвращает полное 16 биты в двух 8-битных сегментах (3 и 232), таким образом сохраняя исходное значение (3 * 256 + 232 = 1000). cast функция, с другой стороны, обрезает вход значение до 255.

  • Формат typecast выход может отличаться в зависимости от используемой системы. Некоторые компьютерные системы хранят данные, начиная с наименее значимого байта (упорядоченное расположение, называемый little-endian), в то время как другие начинают с наиболее значимого байта (называемого big-endian). Можно использовать swapbytes функция для противоположного упорядоченного расположения байтов от маленького-эндового до большого-эндового (и наоборот).

Расширенные возможности

..

См. также

| |

Представлено до R2006a