컴퓨터의 엔디안을 확인하는 것은 데이터 조작에 매우 중요합니다. Go에서 엔디안을 확인하는 한 가지 방법은 안전하지 않은 패키지를 사용하여 정수를 바이트로 변환하고 그 값을 분석하는 것입니다.
<code class="go">var i int = 0x0100 ptr := unsafe.Pointer(&i) if 0x01 == *(*byte)(ptr) { fmt.Println("Big Endian") } else if 0x00 == *(*byte)(ptr) { fmt.Println("Little Endian") } else { // ... }</code>
이 접근 방식이 작동하는 동안 안전하지 않은 패키지를 사용하면 이식성과 안전성에 대한 우려가 높아집니다.
안전하지 않은 패키지를 계속 활용하면서도 엔디안을 확인하는 향상된 방법은 Google의 TensorFlow Go API에서 제공됩니다.
<code class="go">var nativeEndian binary.ByteOrder func init() { buf := [2]byte{} *(*uint16)(unsafe.Pointer(&buf[0])) = uint16(0xABCD) switch buf { case [2]byte{0xCD, 0xAB}: nativeEndian = binary.LittleEndian case [2]byte{0xAB, 0xCD}: nativeEndian = binary.BigEndian default: panic("Could not determine native endianness.") } }</code>
이 솔루션은 바이트 조각을 초기화하고 해당 uint16 표현을 0xABCD로 설정합니다. 결과 바이트 순서를 검사하여 시스템의 엔디안을 결정합니다. 이 접근 방식은 더욱 강력하며 Google에서 널리 채택한 라이브러리와 일치합니다.
위 내용은 Go에서 엔디안을 결정하는 방법: 두 가지 방법의 비교 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!