>백엔드 개발 >Golang >Go에서 []바이트 슬라이스를 int64로 관용적으로 인코딩하는 방법은 무엇입니까?

Go에서 []바이트 슬라이스를 int64로 관용적으로 인코딩하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-11 15:55:10633검색

How to Idiomatically Encode a []byte Slice into an int64 in Go?

Go에서 []바이트 슬라이스를 int64로 인코딩하는 보다 관용적인 접근 방식

Go에서는 []바이트 조각을 int64로 변환합니다. 제공된 코드는 작업을 수행하지만 관용적 유창성을 높이기 위해 최적화될 수 있습니다.

원본 코드:

var data int64
for i := 0; i < 8; i++ {
    data |= int64(mySlice[i]&byte(255)) << uint((8*8)-((i+1)*8))
}

향상된 관용적 접근 방식:

대체적이고 보다 관용적인 접근 방식은 비트 이동 및 슬라이스를 통해 반복:

func main() {
    var mySlice = []byte{244, 244, 244, 244, 244, 244, 244, 244}
    data := int64(0)
    for _, b := range mySlice {
        data = (data << 8) | int64(b)
    }
    fmt.Printf("%d\n", data)
}

설명:

향상된 코드는 비트 이동(<< 및 >>)을 활용하여 다음을 수행합니다. 효율적으로 인코딩합니다. 범위 구문을 사용하여 슬라이스를 반복하여 데이터 값을 8비트(

관용적 접근 방식의 장점:

  • 간결성: 코드는 다음과 같습니다. 훨씬 짧고 읽기 쉽습니다.
  • 명확성: 비트 조작 작업을 명시적인 단계로 나누면
  • 향상된 성능: 비트 이동은 원래 비트 단위 연산보다 더 효율적입니다.
  • 호환성: 이 접근 방식은 Go 프로그래밍의 관용적 스타일에 더 잘 맞습니다.

위 내용은 Go에서 []바이트 슬라이스를 int64로 관용적으로 인코딩하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.