@byteSwap — 바이트 순서 뒤집기
@byteSwap — 바이트 순서 뒤집기
정수나 정수 벡터의 바이트 순서를 통째로 뒤집어 주는 빌트인 함수예요. 엔디언(endian)을 변환할 때 쓰여요. 출처: Zig Documentation
본문
@byteSwap(operand: anytype) T
@TypeOf(operand)는 정수 타입이거나, 비트 수가 8로 나누어 떨어지는 정수 벡터 타입이어야 해요.
이 함수는 정수의 바이트 순서(byte order)를 뒤집어요. 빅 엔디언 정수를 리틀 엔디언 정수로, 리틀 엔디언 정수를 빅 엔디언 정수로 바꿔 주는 거죠.
한 가지 짚고 넘어갈 점이 있어요. 엔디언과 관련된 메모리 배치(memory layout) 를 생각할 때, 정수 타입은 @sizeOf가 알려주는 바이트 수에 맞춰 이해하는 게 맞아요. u24로 예를 들어 볼게요. @sizeOf(u24) == 4인데, 이 말은 u24 값 하나가 메모리에서 4바이트를 차지한다는 뜻이에요. 그래서 리틀/빅 엔디언 시스템에서 뒤집히는 건** 바로 그 4바이트**예요. 반면에 T를 명시적으로 u24로 지정하면, 뒤집히는 것은 3바이트뿐이에요.
더 알아보기(Learn more)
- @bitReverse — 바이트가 아니라 비트 패턴을 뒤집는 빌트인이에요. 엔디언 변환(
@byteSwap)과는 다른 동작이에요. - @sizeOf — 타입이 메모리에서 차지하는 바이트 수를 알려줘요.
@byteSwap이 실제로 몇 바이트를 뒤집는지 이해하는 데 필요해요. - Vectors —
@byteSwap이 벡터에 적용될 때의 동작을 이해할 수 있어요.