@byteSwap — 바이트 순서 뒤집기

@byteSwap — 바이트 순서 뒤집기

정수나 정수 벡터의 바이트 순서를 통째로 뒤집어 주는 빌트인 함수예요. 엔디언(endian)을 변환할 때 쓰여요. 출처: Zig Documentation

본문

@byteSwap(operand: anytype) T

@TypeOf(operand)정수 타입이거나, 비트 수가 8로 나누어 떨어지는 정수 벡터 타입이어야 해요.

operand정수벡터가 될 수 있어요.

이 함수는 정수의 바이트 순서(byte order)를 뒤집어요. 빅 엔디언 정수를 리틀 엔디언 정수로, 리틀 엔디언 정수를 빅 엔디언 정수로 바꿔 주는 거죠.

한 가지 짚고 넘어갈 점이 있어요. 엔디언과 관련된 메모리 배치(memory layout) 를 생각할 때, 정수 타입은 @sizeOf가 알려주는 바이트 수에 맞춰 이해하는 게 맞아요. u24로 예를 들어 볼게요. @sizeOf(u24) == 4인데, 이 말은 u24 값 하나가 메모리에서 4바이트를 차지한다는 뜻이에요. 그래서 리틀/빅 엔디언 시스템에서 뒤집히는 건** 바로 그 4바이트**예요. 반면에 T를 명시적으로 u24로 지정하면, 뒤집히는 것은 3바이트뿐이에요.

더 알아보기(Learn more)

  • @bitReverse — 바이트가 아니라 비트 패턴을 뒤집는 빌트인이에요. 엔디언 변환(@byteSwap)과는 다른 동작이에요.
  • @sizeOf — 타입이 메모리에서 차지하는 바이트 수를 알려줘요. @byteSwap이 실제로 몇 바이트를 뒤집는지 이해하는 데 필요해요.
  • Vectors@byteSwap이 벡터에 적용될 때의 동작을 이해할 수 있어요.