utilities

package
v1.0.2 Latest Latest
Warning

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

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BoolToByte

func BoolToByte(b bool) byte

BoolToByte 将bool转换为byte 如果 b 为 true,返回 1;否则返回 0。

func GetPos

func GetPos(r io.Reader) int64

GetPos 获取 io.Reader 的当前位置。 如果 io.Reader 支持 Seek,返回当前位置。 如果不支持 Seek,返回 -1。

func GetReaderPos

func GetReaderPos(r io.Reader) (int64, bool)

GetReaderPos 获取 io.Reader 的当前位置。 如果 io.Reader 支持 Seek,返回当前位置。 如果不支持 Seek,返回 -1, false。

func GetStringHashInt32

func GetStringHashInt32(s string) int32

GetStringHashInt32 计算字符串的哈希值并返回一个 int32 类型的值。 这个函数使用了 FNV-1a 哈希算法,将字符串转换为一个 32 位的哈希值。 由于 FNV-1a 哈希算法的输出是一个 64 位的哈希值,这里将其转换为 32 位。

func GetStringHashSHA256

func GetStringHashSHA256(s string) int32

GetStringHashSHA256 计算字符串的哈希值并返回一个 int32 类型的值。 这个函数使用了 SHA-256 哈希算法,将字符串转换为一个 32 位的哈希值。 由于 SHA-256 哈希算法的输出是一个 256 位的哈希值,这里只取前 32 位作为返回值。

func LEB128SizeOfValue

func LEB128SizeOfValue(value int) int

LEB128SizeOfValue 根据 LEB128 的编码规则,计算给定整数 value 编码后占用的字节数。 这里假设 value 是一个非负整数。

func PeekByte

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

PeekByte 偷看下一个字节,不移动读取指针。 这里需要一个带缓冲、可 Peek 的包装,如 bufio.Reader。

func PeekString

func PeekString(rs io.ReadSeeker) (string, error)

PeekString 读取下一个字符串(LEB128 + UTF-8),但不消耗它。 因此下次再从同一个 reader 中读取时,会得到相同的数据。

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 ReadFloat2

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

func ReadFloat3

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

func ReadFloat4

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

func ReadFloat4x4

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

func ReadFloat32

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

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

func ReadInt32

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

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

func ReadLEB128

func ReadLEB128(r io.Reader) (int, error)

ReadLEB128 读取一个变长 int,返回 int

func ReadString

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

ReadString 先读一个 LEB128 长度,再读相应字节的 UTF-8

func ReadUInt16

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

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

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 WriteFloat2

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

func WriteFloat3

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

func WriteFloat4

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

func WriteFloat4x4

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

func WriteFloat32

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

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

func WriteInt32

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

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

func WriteLEB128

func WriteLEB128(w io.Writer, value int) error

WriteLEB128 写一个变长 int

func WriteString

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

WriteString 先写字符串长度(LEB128),再写 UTF8 字节

func WriteUInt16

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

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

Types

This section is empty.

Jump to

Keyboard shortcuts

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