>백엔드 개발 >Golang >Go []int8 슬라이스를 문자열로 효율적으로 변환하는 방법은 무엇입니까?

Go []int8 슬라이스를 문자열로 효율적으로 변환하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-15 10:44:10499검색

How to Efficiently Convert a Go []int8 Slice to a String?

[]int8을 문자열로 변환

문제:

슬라이스를 효율적으로 변환하는 방법 int8 ([]int8)을 문자열로? []byte에 대한 표준 문자열(바이트 슬라이스) 변환은 "문자열 유형으로 변환할 수 없습니다."라는 오류와 함께 []int8에 대해 실패합니다.

해결책:

[] 이후 int8과 []byte는 유형이 다르므로 직접 변환이 불가능합니다. 따라서 수동 변환이 필요합니다.

변환 프로세스에는 세 단계가 포함됩니다.

  1. int8을 바이트로 변환: 바이트를 사용하여 각 int8 값을 바이트로 변환합니다. (v) 변환.
  2. 바이트 슬라이스 생성: 할당 입력 슬라이스와 길이가 동일한 []바이트 슬라이스.
  3. 바이트 슬라이스에 값 복사: 인덱싱([])을 사용하여 변환된 바이트를 바이트 슬라이스에 할당합니다.

코드 구현:

다음 Go 코드는 변환:

func B2S(bs []int8) string {
    b := make([]byte, len(bs))
    for i, v := range bs {
        b[i] = byte(v)
    }
    return string(b)
}

이 코드는 int8 값이 바이트로 올바르게 변환되어 정확한 문자열 표현이 되도록 보장합니다.

참고:

문제 설명에서 처음에 []int8을 언급했지만 질문자는 나중에 이를 []uint8로 수정했습니다. []uint8의 경우 byte가 uint8의 별칭이므로 string(ba)를 사용하여 문자열로 직접 변환이 가능합니다.

위 내용은 Go []int8 슬라이스를 문자열로 효율적으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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