[]바이트에 저장된 이진 데이터를 부호 있는 정수 또는 부동 소수점과 같은 숫자 유형으로 변환- 포인트 번호를 사용하려면 엔디안에 대한 이해가 필요합니다. 엔디안은 바이트가 메모리에 저장되는 순서를 정의하며, 두 가지 일반적인 형식은 리틀 엔디안(최하위 바이트 먼저)과 빅 엔디안(가장 중요한 바이트 먼저)입니다.
Go 바이너리 패키지는 다음을 제공합니다. []바이트를 부호 없는 정수로 변환하는 LittleEndian.Uint16()과 같은 함수에는 부호 있는 정수(Int16())에 직접적으로 상응하는 함수가 없습니다. 이는 엔디안이 데이터의 해석에만 영향을 미치고 메모리에서의 실제 표현에는 영향을 미치지 않기 때문입니다.
부호 없는 정수를 부호 있는 정수로 변환하려면 동일한 메모리 레이아웃을 공유하므로 간단한 유형 변환만으로 충분합니다. 예:
<code class="go">a := binary.LittleEndian.Uint16(sampleA) a2 := int16(a)</code>
마찬가지로 수학 패키지 함수 Float32frombits() 및 Float64frombits()를 사용하여 부호 없는 정수를 부동 소수점 숫자로 변환할 수 있습니다.
<code class="go">a := binary.LittleEndian.Uint64(sampleA) a2 := math.Float64frombits(a)</code>
바이너리 패키지는 내부적으로 이러한 변환을 수행할 수 있는 Read() 및 Write() 함수도 제공합니다.
<code class="go">import "bytes" b := []byte{0x18, 0x2d, 0x44, 0x54, 0xfb, 0x21, 0x09, 0x40} buf := bytes.NewReader(b) var pi float64 err := binary.Read(buf, binary.LittleEndian, &pi) if err != nil { fmt.Println("binary.Read failed:", err) } fmt.Println(pi) // Using Read() produces the same result as using Uint64() and Float64frombits(): a := binary.LittleEndian.Uint64(b) a2 := math.Float64frombits(a) fmt.Println(a2) // Output: // 3.141592653589793 // 3.141592653589793</code>
위 내용은 Go []byte를 Little/Big-Endian Signed Integer 또는 Float로 어떻게 변환합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!