Main Content

typecast

기본 데이터를 변경하지 않고 데이터형 변환

설명

예제

Y = typecast(X,type)은 기본 데이터를 변경하지 않고 X의 비트 패턴을 type으로 지정된 데이터형으로 변환합니다. X는 비희소 형식이며 복소수가 아닌 숫자형 스칼라 또는 벡터여야 합니다.

예제

모두 축소

정수를 같은 저장 공간 크기의 부호 없는 정수로 변환합니다.

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

비트 패턴을 16진수 표현으로 표시합니다. typecast를 사용하여 데이터형을 변환하면 기본 데이터가 변경되지 않습니다.

format hex
X
X = int16
   ffff

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

8비트 정수로 구성된 1×4 벡터를 생성합니다.

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

   77   60   43   26

4바이트(32비트)의 저장 공간을 사용하는 8비트 정수 4개를 동일한 4바이트의 저장 공간을 사용하는 단정밀도 숫자로 변환합니다.

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

비트 패턴을 16진수 표현으로 표시합니다. 16진수 표기법에서, 1바이트(8비트)는 2자리 숫자로 표현됩니다. typecast 함수는 데이터를 수정하지 않고 비트 패턴을 재배열합니다.

format hex
X
X = 1x4 int8 row vector

   4d   3c   2b   1a

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

32비트 부호 없는 정수로 구성된 1×3 벡터를 만듭니다.

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

     1   255   256

typecast를 사용하여 X를 8비트 부호 없는 정수로 형변환합니다. 각 32비트 값은 4개의 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)으로 형변환해 보겠습니다. 16진수 표현을 사용하여 재배열된 비트 패턴을 표시합니다. typecast 함수는 리틀 엔디안 형식으로 출력값을 반환하며, 입력 데이터의 8비트 세그먼트 4개를 결합하여 16비트 세그먼트 2개를 생성합니다.

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', 'int8', 'int16', 'int32', 'int64', 'uint8', 'uint16', 'uint32' 또는 'uint64'로 지정됩니다.

type의 비트 크기가 X의 각 요소의 비트 크기보다 n배 큰 경우, X를 데이터형 type으로 변환하려면 Xn의 배수에 해당하는 개수의 요소가 있어야 합니다. 그렇지 않으면 MATLAB®은 오류를 발생시킵니다.

  • typecast는 입력 데이터를 변경하지 않는다는 점에서 MATLAB cast 함수와 다릅니다. typecast는 출력값 Y에 항상 입력값 X에 있는 것과 같은 바이트 수를 반환합니다. 예를 들어 typecast를 사용하여 16비트 정수 1000을 uint8형으로 형변환하면, 8비트 세그먼트 2개(3과 232)에 비희소 16비트를 반환하여 원래 값(3*256 + 232 = 1000)을 유지합니다. 반면, cast 함수는 입력값을 255로 잘라냅니다.

  • typecast 출력값의 형식은 사용하는 시스템에 따라 다를 수 있습니다. 일부 컴퓨터 시스템에서는 최하위 바이트부터 데이터를 저장하는 반면(리틀 엔디안이라는 정렬), 그 밖의 다른 시스템에서는 최상위 바이트부터 저장합니다(빅 엔디안이라고 함). swapbytes 함수를 사용하면 리틀 엔디안에서 빅 엔디안으로 바이트 순서를 반전할 수 있으며, 그 반대로도 반전할 수 있습니다.

확장 기능

버전 내역

R2006a 이전에 개발됨

참고 항목

| |