Golang은 고성능, 동시성 및 유지 관리 가능성을 개발하기 위한 프로그래밍 언어입니다. Golang에서는 바이트 변환 문제도 자주 접하는 문제입니다. Golang에서는 다른 언어와 달리 바이트가 실제로 독립적인 데이터 유형이기 때문입니다. 따라서 실제 코딩에서는 데이터를 더 잘 처리하기 위해 바이트와 일반적으로 사용되는 다른 데이터 유형 간의 상호 변환 방법을 마스터해야 합니다.
이 글에서는 Golang에서 바이트 변환의 다양한 상황, 관련 함수 및 사용법, 실제 개발에서 이러한 함수를 올바르게 사용하는 방법에 대해 설명합니다.
1. 바이트와 문자열 간의 상호 변환
Golang에서는 바이트와 문자열이 가장 일반적으로 사용되는 두 가지 유형입니다. 바이트는 데이터의 가장 작은 단위이므로 Golang에서 매우 흔히 사용되며, 문자열은 텍스트 처리 모듈에 필수적인 유형입니다. 따라서 실제 개발에서는 바이트와 문자열 간의 변환이 필요한 경우가 많습니다.
바이트 유형을 문자열 유형으로 변환하려면 string() 함수를 사용할 수 있습니다. 예:
b := []byte{'g', 'o', 'l', 'a', 'n', 'g'} s := string(b) fmt.Println(s) //输出"golang"
문자열 유형은 []byte() 함수를 사용하여 바이트 유형으로 변환할 수 있습니다. 예:
s := "golang" b := []byte(s) fmt.Println(b) //输出[103 111 108 97 110 103]
2. byte, int, uint 간 변환
Golang에서는 byte, int, uint 유형 간의 변환도 자주 사용됩니다. 실제 개발에서는 바이트를 통해 데이터를 전송하고 수신단에서 바이트를 int 또는 uint 유형으로 변환해야 하는 경우가 많습니다.
바이트 유형을 int 유형으로 변환하려면 int() 함수를 사용할 수 있습니다. byte를 int로 변환하면 byte가 나타내는 숫자의 ASCII 코드 값을 얻을 수 있습니다. 예:
b := byte('a') i := int(b) fmt.Println(i) //输出97
byte 유형은 uint() 함수를 사용하여 uint 유형으로 변환될 수 있습니다. 예:
b := byte(255) u := uint(b) fmt.Println(u) //输出255
Int 유형은 byte() 함수를 사용하여 바이트 유형으로 변환할 수 있습니다. 예:
i := 97 b := byte(i) fmt.Println(b) //输出97
uint 유형은 byte() 함수를 사용하여 바이트 유형으로 변환할 수 있습니다. 예:
u := uint(255) b := byte(u) fmt.Println(b) //输出255
int 유형의 정수가 255보다 큰 경우 바이트 유형으로 변환하면 정밀도가 손실되고 하위 8자리만 유지된다는 점에 유의해야 합니다. 마찬가지로 uint 유형의 정수가 255보다 크면 상위 숫자가 삭제됩니다.
3. 바이트와 bool 유형 간의 상호 변환
Golang에서 bool 유형은 true와 false의 두 가지 값만 갖습니다. 그러나 어떤 경우에는 bool 유형의 값을 byte 유형으로 변환해야 합니다. 이때, true는 1로, false는 0으로 변환될 수 있습니다.
bool 유형을 byte 유형으로 변환하려면 byte() 함수를 사용할 수 있습니다. 예:
b := true var v byte if b { v = 1 } else { v = 0 } fmt.Println(v) //输出1
바이트 유형을 bool 유형으로 변환하는 것은 구체적인 실제 상황에 따라 결정되며, 바이트가 0인지 1인지 확인한 다음 if 문을 통해 bool 유형으로 변환해야 하는 경우가 많습니다. 예:
b := byte(1) var v bool if b == 1 { v = true } else { v = false } fmt.Println(v) //输出true
4, byte와 float32 및 float64 간의 변환
Golang에서는 byte와 float32 및 float64 유형 간의 변환도 매우 일반적입니다. 우리는 일반적으로 바이트를 통해 데이터를 전송해야 하며, 수신자는 바이트를 float32 또는 float64 유형으로 변환해야 합니다.
바이트 유형을 float32 유형으로 변환하려면 math.Float32frombits() 함수를 사용하면 됩니다. 예:
b := []byte{222, 162, 163, 66} f := math.Float32frombits(binary.LittleEndian.Uint32(b)) fmt.Println(f) //输出3.14
바이트 유형을 float64 유형으로 변환하려면 math.Float64frombits() 함수를 사용할 수 있습니다. 예:
b := []byte{35, 224, 71, 66, 235, 81, 184, 64} f := math.Float64frombits(binary.LittleEndian.Uint64(b)) fmt.Println(f) //输出3.141592653589793
byte 유형을 float32 및 float64 유형으로 변환하기 위해 math.Float32frombits() 및 math.Float64frombits() 함수를 사용할 때, Binary.LittleEndian.Uint32() 및 Binary.LittleEndian.Uint64에 유의해야 합니다. 바이트 배열의 바이트 순서를 변환하려면 () 함수를 사용해야 합니다. 그렇지 않으면 정밀도 오류가 발생할 수 있습니다.
float32 유형을 바이트 유형으로 변환하려면 math.Float32bits() 함수를 사용할 수 있습니다. 예:
f := float32(3.14) b := make([]byte, 4) binary.LittleEndian.PutUint32(b, math.Float32bits(f)) fmt.Println(b) //输出[222 162 163 66]
float64 유형을 바이트 유형으로 변환하려면 math.Float64bits() 함수를 사용할 수 있습니다. 예:
f := float64(3.141592653589793) b := make([]byte, 8) binary.LittleEndian.PutUint64(b, math.Float64bits(f)) fmt.Println(b) //输出[35 224 71 66 235 81 184 64]
math.Float32bits() 및 math.Float64bits() 함수를 사용하여 float32 및 float64 유형을 바이트 유형으로 변환하는 경우 Binary.LittleEndian.PutUint32() 및 Binary.LittleEndian.PutUint64() 함수를 호출해야 합니다. 바이트 배열의 바이트 순서가 올바른지 확인합니다.
요약
Golang에서는 바이트 유형이 매우 널리 사용됩니다. 데이터를 더 잘 처리하려면 바이트와 다른 일반적인 유형 간의 변환 방법에 능숙해야 합니다. 이 글에서는 byte와 string, int, uint, bool, float32, float64 간의 상호변환 방법과 그에 대응하는 함수를 자세히 소개하여 모든 분들께 도움이 되기를 바랍니다.
위 내용은 Golang에서 바이트 변환의 다양한 상황에 대해 토론의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!