일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- go언어
- http
- bitcoin
- JavaScript
- Golang
- write
- Sync
- Close
- C
- API
- package
- Linux
- window
- 책
- Callback
- json
- c++
- windows
- go
- install
- channel
- File
- GO 언어
- mutex
- range
- 영화
- tcp
- FOR
- Python
- 리뷰
- Today
- Total
목록byte (2)
Code Habit
go 언어에서 byte배열을 string으로 변환하는 방법은 여러가지 있다. 예제이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 b := []byte{'J', 'i', 'n', 'S', 'u', 'n', 'g'} str1 := string(b[:]) str2 := fmt.Sprintf("%s", buf) str3 := bytes.NewBuffer(b).String() str4 := BytesToString(b) // func BytesToString(b []byte) string { bh := (*reflect.SliceHeader)(unsafe.Pointer(&b)) sh := reflect.StringHeader{bh.Data, bh.Len} return *(*string)(unsafe...
go 로 작성된 서버/클라이언트 끼리 구조체 데이터를 주고 받고 싶으면 "gob"패키지 같은 go에서 제공하는 패키지를 사용하면 편리하다. 그런데 만약 go로 서버를 만들되 클라이언트를 다른언어 ( c ) 로 만들게 되면 위와 같은 패키지는 사용할 수 없게 된다. 이렇게 되면 문제가 하나 발생하는데 go에서는 포인터 개념도 없고, 문자열을 표현하는 string 자료형이 가변이라 약속된 크기의 데이터를 주고 받기가 꽤 까다롭다는 것이다. 그래서 필자는 아래와 같은 두가지 방법을 생각해 보았다. 1. 사이즈 전송 후 구조체 데이터를 json데이터로 전송 2. 사이즈 전송 후 구조체 데이터의 각 필드를 고정된 크기의 []byte형으로 전송 네트워크 통신에서 (특히 http 통신)에서 많이 사용하는 json 데..