프로그래밍에서 데이터의 직렬화 및 역직렬화는 매우 일반적인 작업입니다. Golang에서는 표준 라이브러리의 "인코딩/바이너리" 패키지를 사용하여 데이터 구조를 바이트 시퀀스로 변환할 수 있는데, 이는 데이터 전송 및 저장에 특히 유용합니다. 이 기사에서는 Golang을 사용하여 구조를 바이트 시퀀스로 변환하는 방법을 소개합니다.
1. Golang의 구조
Golang에서 구조는 다양한 데이터 유형을 결합하여 보다 복잡한 데이터 유형을 형성할 수 있는 사용자 정의 데이터 구조입니다. 구조를 정의하는 구문은 다음과 같습니다.
type 结构体名 struct { 字段名1 数据类型1 字段名2 数据类型2 …… }
예를 들어 개인 정보를 나타내는 Person 구조를 정의할 수 있습니다.
type Person struct { Name string Age int Height float64 }
2. Golang의 바이트 시퀀스
Golang에서는 바이트 슬라이스를 사용하여 단어를 나타낼 수 있습니다. 파일에 전송하거나 저장하기 위해 데이터 구조를 바이트 시퀀스로 직렬화할 수 있는 시퀀스입니다. 예를 들어, 다음 명령문을 사용하여 빈 바이트 슬라이스를 생성할 수 있습니다:
b := make([]byte, 0)
3. 구조를 바이트 시퀀스로 변환
Golang의 "인코딩/바이너리" 패키지는 Golang 데이터 유형을 함수로 변환하기 위한 도구 세트를 제공합니다. 바이트 시퀀스의 경우. 구조체의 경우 "binary.Write" 함수를 사용하여 이를 바이트 시퀀스로 변환할 수 있습니다. 예는 다음과 같습니다.
package main import ( "encoding/binary" "fmt" ) type Person struct { Name string Age int Height float64 } func main() { p := Person{"Tom", 20, 1.8} b := make([]byte, 0) binary.Write(&b, binary.LittleEndian, p) fmt.Println(b) }
이 예에서는 Person 구조체를 만들고 바이너리 모드를 사용하여 이를 바이트 조각으로 직렬화한 다음 바이트 조각을 출력합니다. 출력은 다음과 같습니다.
[3 84 111 109 20 0 0 0 0 0 0 0 0 0 0 0 236 81 184 30 133 235 64]
이 출력은 실제로 "Tom", "20" 및 "1.8"을 바이트 시퀀스로 변환한 결과입니다. 여기서는 Binary 모드를 사용하고 little-endian 모드를 사용합니다(즉, 시작 위치에 하위 바이트가 저장됨).
생성된 바이트 시퀀스에는 구조의 필드 이름과 유형 정보가 포함되어 있음을 알 수 있습니다. 데이터 구조를 올바르게 복원하려면 역직렬화 중에 이 정보를 알아야 하기 때문입니다.
4. 바이트 시퀀스를 구조로 변환
바이트 시퀀스를 구조로 역직렬화하려면 "binary.Read" 함수를 사용할 수 있습니다. 예는 다음과 같습니다.
package main import ( "bytes" "encoding/binary" "fmt" ) type Person struct { Name string Age int Height float64 } func main() { p := Person{"Tom", 20, 1.8} b := make([]byte, 0) binary.Write(&b, binary.LittleEndian, p) out := new(Person) buf := bytes.NewReader(b) binary.Read(buf, binary.LittleEndian, out) fmt.Printf("%+v", *out) }
이 예에서는 먼저 "binary.Write"를 사용하여 Person 구조를 바이트 조각으로 직렬화합니다. 그런 다음 "bytes.NewReader"를 사용하여 바이트를 버퍼로 분할했습니다. 마지막으로 "binary.Read" 함수를 사용하여 버퍼의 데이터를 새로운 Person 구조로 읽고 결과를 출력합니다.
이 경우 출력은 다음과 같습니다.
{Name:"Tom", Age:20, Height:1.8}
이는 바이트 시퀀스를 Person 구조로 성공적으로 역직렬화했음을 보여줍니다.
Summary
Golang에서는 "encoding/binary" 패키지를 사용하여 데이터 구조를 바이트 시퀀스로 변환할 수 있습니다. 이는 데이터를 다른 컴퓨터로 전송하거나 파일에 저장할 수 있기 때문에 매우 유용합니다. 구조를 바이트 시퀀스로 변환하려면 "binary.Write" 함수를 사용할 수 있고, 바이트 시퀀스를 구조로 역직렬화하려면 "binary.Read" 함수를 사용할 수 있습니다. 이러한 함수는 다양한 데이터 유형을 처리하고 다양한 엔디안을 지원할 수 있습니다.
이 기사가 Golang의 구조를 바이트 시퀀스로 변환하는 데 도움이 되기를 바랍니다.
위 내용은 golang 구조를 바이트로 변환의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!