exponenta event banner

приглашать на однотипные роли

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

Синтаксис

Описание

пример

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-разрядных сегмента. Выполнение этого кода в системе little-endian приводит к следующим результатам.

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 функция возвращает выходные данные в стиле little-endian, комбинируя четыре 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 функция обратного упорядочения байтов от little-endian к big-endian (и наоборот).

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

..

См. также

| |

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