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 битов) представлен двумя цифрами. 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

Третий элемент X, 256, превышает максимальное значение, которое могут содержать 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). Используйте шестнадцатеричное представление, чтобы показать перестановку комбинаций двоичных разрядов. 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

Можно преобразовать выход с прямым порядком байтов в обратный порядок байтов (и наоборот) использование 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'int8int16int32int64uint8uint16uint32, или 'uint64'.

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

Советы

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

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

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

Смотрите также

| |

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