| 12345678910111213141516171819202122232425262728293031323334 |
- package network
- import (
- "bytes"
- "io"
- )
- // ReadBigEndianString 大端读取字符串 TODO 考虑改为一个网络字节序得写入和读取器
- func ReadBigEndianString(bigEndianBytes []byte) (string, error) {
- // 使用bytes.Buffer来模拟一个io.Reader
- reader := bytes.NewReader(bigEndianBytes)
- // 初始化一个buffer,用于存放读取的字符串
- var buffer []byte
- // 使用binary.Read以大端模式读取字符串
- // 因为字符串可能包含\x00,所以需要读取到\x00为止
- for {
- b := make([]byte, 1)
- _, err := reader.Read(b)
- if err != nil && err != io.EOF {
- return "", err
- }
- if b[0] == 0 {
- break
- }
- buffer = append(buffer, b...)
- }
- return string(buffer), nil
- }
|