binaryio

package
v1.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 29, 2025 License: BSD-3-Clause Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Get7BitEncodedIntSize

func Get7BitEncodedIntSize(value int32) int

Get7BitEncodedIntSize 计算编码一个 int32 值所需的字节数 与 Write7BitEncodedInt 保持一致的编码逻辑

func PeekByte

func PeekByte(r io.Reader) (byte, error)

PeekByte 偷看下一个字节,不移动读取指针。 要求 reader 实现 Peeker 接口,例如 bufio.Reader。

func PeekString

func PeekString(r io.Reader) (string, error)

PeekString 读取下一个字符串(7BitEncode + UTF-8),但不消耗它。 要求 reader 实现 Peeker 接口,例如 bufio.Reader。

注意:如果字符串长度超过了 bufio.Reader 的缓冲区大小(默认 4KB), Peek 操作会返回 bufio.ErrBufferFull。 如果需要处理超大字符串,请在创建 bufio.Reader 时指定更大的缓冲区大小

func Read7BitEncodedInt

func Read7BitEncodedInt(reader io.Reader) (int32, error)

Read7BitEncodedInt 读取 C# 格式的 7-bit encoded int 完全匹配 .NET 4.8 的实现逻辑

func ReadBool

func ReadBool(r io.Reader) (bool, error)

ReadBool 读取一个字节,返回 bool,如果字节非 0 则返回 true,否则返回 false 对应 C# 中的 BinaryReader.ReadBoolean

func ReadByte

func ReadByte(r io.Reader) (byte, error)

ReadByte 读 1 字节

func ReadBytes

func ReadBytes(r io.Reader, n int) ([]byte, error)

ReadBytes 读取 n 个字节

func ReadFloat2

func ReadFloat2(r io.Reader) ([2]float32, error)

func ReadFloat3

func ReadFloat3(r io.Reader) ([3]float32, error)

func ReadFloat32

func ReadFloat32(r io.Reader) (float32, error)

ReadFloat32 从 r 中读取 4 个字节,以 little-endian 解码成 float32 在 C# 中是 BinaryReader.ReadSingle

func ReadFloat4

func ReadFloat4(r io.Reader) ([4]float32, error)

func ReadFloat4x4

func ReadFloat4x4(r io.Reader) ([16]float32, error)

func ReadFloat64

func ReadFloat64(r io.Reader) (float64, error)

ReadFloat64 读取 8 字节浮点数 (little-endian)

func ReadInt16

func ReadInt16(r io.Reader) (int16, error)

ReadInt16 读取 2 字节有符号整数 (little-endian)

func ReadInt32

func ReadInt32(r io.Reader) (int32, error)

ReadInt32 读取 4 字节 int32(little-endian)

func ReadInt64

func ReadInt64(r io.Reader) (int64, error)

ReadInt64 读取 8 字节有符号整数 (little-endian)

func ReadInt8

func ReadInt8(r io.Reader) (int8, error)

ReadInt8 读取 1 字节有符号整数

func ReadString

func ReadString(r io.Reader) (string, error)

ReadString 读取 C# BinaryWriter.WriteString 格式的字符串 完全匹配 .NET 4.8 的实现逻辑 需要注意这个 7BitEncode 虽然与 LEB128 类似,但不是完全相同

func ReadUInt16

func ReadUInt16(r io.Reader) (uint16, error)

ReadUInt16 读取 2 字节无符号整数 (little-endian)

func ReadUInt32

func ReadUInt32(r io.Reader) (uint32, error)

ReadUInt32 读取 4 字节无符号整数 (little-endian)

func ReadUInt64

func ReadUInt64(r io.Reader) (uint64, error)

ReadUInt64 读取 8 字节无符号整数 (little-endian)

func Write7BitEncodedInt

func Write7BitEncodedInt(writer io.Writer, value int32) error

Write7BitEncodedInt 写入 C# 格式的 7-bit encoded int 完全匹配 .NET 4.8 的实现:支持负数,使用无符号转换

func WriteBool

func WriteBool(w io.Writer, v bool) error

WriteBool 写一个字节,如果 b 为 true 则写入 1,否则写入 0

func WriteByte

func WriteByte(w io.Writer, b byte) error

WriteByte 写单字节

func WriteBytes

func WriteBytes(w io.Writer, bs []byte) error

WriteBytes 写多个字节

func WriteFloat2

func WriteFloat2(w io.Writer, arr [2]float32) error

func WriteFloat3

func WriteFloat3(w io.Writer, arr [3]float32) error

func WriteFloat32

func WriteFloat32(w io.Writer, val float32) error

WriteFloat32 写一个 float32 (4 bytes, little-endian) 在 C# 中是 BinaryWriter.WriteSingle

func WriteFloat4

func WriteFloat4(w io.Writer, arr [4]float32) error

func WriteFloat4x4

func WriteFloat4x4(w io.Writer, arr [16]float32) error

func WriteFloat64

func WriteFloat64(w io.Writer, value float64) error

WriteFloat64 写入 8 字节浮点数 (little-endian)

func WriteInt16

func WriteInt16(w io.Writer, value int16) error

WriteInt16 写入 2 字节有符号整数 (little-endian)

func WriteInt32

func WriteInt32(w io.Writer, v int32) error

WriteInt32 写一个 4 字节 int32(little-endian)

func WriteInt64

func WriteInt64(w io.Writer, value int64) error

WriteInt64 写入 8 字节有符号整数 (little-endian)

func WriteInt8

func WriteInt8(w io.Writer, value int8) error

WriteInt8 写入 1 字节 int8

func WriteString

func WriteString(w io.Writer, s string) error

WriteString 写入 C# BinaryWriter.WriteString 格式的字符串 完全匹配 .NET 4.8 的实现逻辑 需要注意这个 7BitEncode 虽然与 LEB128 类似,但不是完全相同

func WriteUInt16

func WriteUInt16(w io.Writer, val uint16) error

WriteUInt16 写入一个16位无符号整数(little-endian)

func WriteUInt32

func WriteUInt32(w io.Writer, val uint32) error

WriteUInt32 写入一个 4 字节 uint32(little-endian)

func WriteUInt64

func WriteUInt64(w io.Writer, value uint64) error

WriteUInt64 写入 8 字节无符号整数 (little-endian)

Types

type Peeker added in v1.4.0

type Peeker interface {
	Peek(n int) ([]byte, error)
	io.Reader
}

Peeker 定义了实现了 Peek 方法的接口,bufio.Reader 实现了该接口。

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL