이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

typecast

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

구문

Y = typecast(X, type)

설명

Y = typecast(X, type)X에 있는 숫자형 값을 type에서 지정한 데이터형으로 변환합니다. 입력값 X는 비희소 형식의, 복소수가 아닌 숫자형 스칼라 또는 벡터여야 합니다. type 입력값은 'uint8', 'int8', 'uint16', 'int16', 'uint32', 'int32', 'uint64', 'int64', 'single', 'double' 중 하나로 설정된 문자열입니다.

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

typecast의 출력값은 그 출력값을 사용하는 시스템에 따라 형식이 다르게 지정될 수 있습니다. 일부 컴퓨터 시스템에서는 최상위 유효 바이트부터 데이터를 저장하는 반면(빅 엔디안이라는 정렬), 그 밖의 다른 시스템에서는 최하위 유효 바이트부터 저장합니다(리틀 엔디안이라고 함).

참고

X에 들어 있는 값 개수가 출력값을 만드는 데 필요한 개수보다 적을 경우, MATLAB은 오류를 생성합니다.

예제

예제 1

이 예제에서는 크기가 같은 데이터형 간에 변환합니다.

typecast(uint8(255), 'int8')
ans =
   -1

typecast(int16(-1), 'uint16')
ans =
  65535

예제 2

X를 32비트 정수로 구성된 1x3 벡터로 설정한 다음, 8비트 정수 유형으로 형변환합니다.

X = uint32([1 255 256])
X =
           1         255         256

다음 명령을 리틀 엔디안 시스템에서 실행하면 다음과 같은 결과가 생성됩니다. 각 32비트 값은 8비트 세그먼트 4개로 나누어집니다.

Y = typecast(X, 'uint8')
Y =
   1   0   0   0  255   0   0   0   0   1   0   0

X의 세 번째 요소인 256은 Y(9)로 변환하는 과정에서 8비트를 초과하므로, Y(10)으로 오버플로됩니다.

Y(9:12)
ans =
    0    1    0    0

length(Y)4.*length(X)과 같다는 점에 유의하십시오. 또한 typecast의 출력값과 cast의 출력값의 차이에 유의하십시오.

Z = cast(X, 'uint8')
Z =
    1  255  255

예제 3

이 예제는 더 작은 데이터형(uint8)을 더 큰 데이터형(uint16)으로 형변환합니다. 숫자를 16진수 형식으로 표시하면 데이터가 어떻게 재배열되는지 더 쉽게 확인할 수 있습니다.

format hex
X = uint8([44 55 66 77])
X =
   2c   37   42   4d

첫 번째 typecast는 빅 엔디안 시스템에서 수행됩니다. 입력 데이터의 8비트 세그먼트 4개가 결합되어 16비트 세그먼트 2개를 생성합니다.

Y = typecast(X, 'uint16')
Y =
   2c37   424d

두 번째 typecast는 리틀 엔디안 시스템에서 수행됩니다. 바이트 순서의 차이를 주목합니다.

Y = typecast(X, 'uint16')
Y =
   372c   4d42

swapbytes 함수를 사용하여 리틀 엔디안 형식의 출력값을 빅 엔디안 형식으로(그리고 그 반대로) 변경할 수 있습니다.

Y = swapbytes(typecast(X, 'uint16'))
Y =
   2c37   424d

예제 4

이 예제에서는 8비트 값 3개로 구성된 벡터에서 32비트 값을 만들려고 합니다. 입력값의 바이트 수가 부족하므로, MATLAB은 오류를 생성합니다.

format hex
typecast(uint8([120 86 52]), 'uint32')

Error using typecast
Too few input values to make output type.

예제를 반복하되, 8비트 값 4개로 구성된 벡터를 사용하면 예상한 답이 반환됩니다.

typecast(uint8([120 86 52 18]), 'uint32')
ans =
   12345678

확장 기능

참고 항목

| |

R2006a 이전에 개발됨