Repository navigation
API Conv8
面向 UInt8Array 的静态二进制编解码帮助类型。
Conv8 是基础设施 NativeType,在字节缓冲上读写标量与 UTF-8 文本。typeof Conv8 为 "type",new Conv8() 失败,也不保存状态。缓冲区必须是 UInt8Array;Int8Array 及其他 packed array 会按类型不匹配失败。
多字节整数与浮点通过 littleEndian 控制字节序,默认 true(低字节在前)。脚本 string 本身是 UTF-16;getString / setString 只做 UTF-8 字节 ↔ 脚本字符串,没有通用 Encoding 对象。
偏移越界或字符串写入超出剩余空间时抛出运行时错误。Conv8.getInt64 / getUInt64 仍以 Number 往返,超出精确整数范围会丢失精度;需要完整 64 位时使用 int64 或 Int64Array。
未遮蔽且参数类型已证明时,固定参数方法可直调 Core。
| Member | Returns | 摘要 |
|---|---|---|
Conv8.BYTES1 |
number |
1 字节宽度(bool、int8、uint8)。 |
Conv8.BYTES2 |
number |
2 字节宽度(int16、uint16)。 |
Conv8.BYTES4 |
number |
4 字节宽度(int32、uint32、float32)。 |
Conv8.BYTES8 |
number |
8 字节宽度(int64、uint64、float64)。 |
Conv8.getBool(buffer, offset) |
boolean |
读 1 字节;非 0 为 true。 |
Conv8.setBool(buffer, offset, value) |
— | 写 1 字节 0 或 1。 |
Conv8.getInt8(buffer, offset) |
number |
有符号 8 位。 |
Conv8.setInt8(buffer, offset, value) |
— | 有符号 8 位。 |
Conv8.getUInt8(buffer, offset) |
number |
无符号 8 位。 |
Conv8.setUInt8(buffer, offset, value) |
— | 无符号 8 位。 |
Conv8.getInt16(buffer, offset, littleEndian?) |
number |
有符号 16 位。 |
Conv8.setInt16(buffer, offset, value, littleEndian?) |
— | 有符号 16 位。 |
Conv8.getUInt16(buffer, offset, littleEndian?) |
number |
无符号 16 位。 |
Conv8.setUInt16(buffer, offset, value, littleEndian?) |
— | 无符号 16 位。 |
Conv8.getInt32(buffer, offset, littleEndian?) |
number |
有符号 32 位。 |
Conv8.setInt32(buffer, offset, value, littleEndian?) |
— | 有符号 32 位。 |
Conv8.getUInt32(buffer, offset, littleEndian?) |
number |
无符号 32 位。 |
Conv8.setUInt32(buffer, offset, value, littleEndian?) |
— | 无符号 32 位。 |
Conv8.getInt64(buffer, offset, littleEndian?) |
number |
有符号 64 位,经 Number。 |
Conv8.setInt64(buffer, offset, value, littleEndian?) |
— | 有符号 64 位,来自 Number。 |
Conv8.getUInt64(buffer, offset, littleEndian?) |
number |
无符号 64 位,经 Number。 |
Conv8.setUInt64(buffer, offset, value, littleEndian?) |
— | 无符号 64 位,来自 Number。 |
Conv8.getFloat32(buffer, offset, littleEndian?) |
number |
IEEE-754 binary32。 |
Conv8.setFloat32(buffer, offset, value, littleEndian?) |
— | IEEE-754 binary32。 |
Conv8.getFloat64(buffer, offset, littleEndian?) |
number |
IEEE-754 binary64。 |
Conv8.setFloat64(buffer, offset, value, littleEndian?) |
— | IEEE-754 binary64。 |
Conv8.getString(buffer, offset, byteLength) |
string |
按字节长度读 UTF-8。 |
Conv8.setString(buffer, offset, value) |
number |
写 UTF-8,返回写入字节数。 |
buffer 一律为 UInt8Array。offset 为从 0 起的字节偏移。省略 littleEndian 时视为 true。set*(除 setString)无返回值。
字节宽度常量便于手工推进偏移。同宽的有符号/无符号/浮点共用一个常量。
var bytes = new UInt8Array(Conv8.BYTES4 + Conv8.BYTES2);
Conv8.setInt32(bytes, 0, 7);
Conv8.setInt16(bytes, Conv8.BYTES4, -3);
return Conv8.getInt16(bytes, 4); // -38 位读写没有字节序参数。16/32/64 位整数与 float32/float64 的最后一个参数为 littleEndian。
var bytes = new UInt8Array(4);
Conv8.setInt32(bytes, 0, 0x01020304, true);
var little = [bytes[0], bytes[1], bytes[2], bytes[3]]; // [4, 3, 2, 1]
Conv8.setInt32(bytes, 0, 0x01020304, false);
return Conv8.getInt32(bytes, 0, false); // 0x01020304getBool 把非零字节当作 true;setBool 只写入 0 或 1。
setString 按 UTF-8 写入(无 BOM),返回实际字节数。getString 需要调用方提供该字节长度。脚本字符串内部仍是 UTF-16。
var bytes = new UInt8Array(16);
var written = Conv8.setString(bytes, 2, "hi");
return Conv8.getString(bytes, 2, written); // "hi"剩余空间不足或 offset/byteLength 越界时抛错。不要把 Encoding.Unicode 理解成这套 API;需要 UTF-16 定长字段时应另议封闭常量,而不是通用 Encoding 类型。
- 只接受
UInt8Array。Int8Array、Int32Array等会失败。 - 索引范围是
[offset, offset + size),必须落在buffer.length内。 -
int64/uint64不提供精确 64 位整数类型;超出Number精确整数范围会丢失精度。 - 没有脚本级
Encoding全局。Conv8字符串路径固定 UTF-8。
AuroraScript.JIT 4.0.0 · 文档首页 · 仓库 · MIT License
- 宿主集成
- 脚本原生类型
- .NET 宿主 API 参考
- 引擎与执行
- 编译配置
- 源解析
- 脚本原生类型
- NativeTypeAttribute
- NativePackageAttribute
- ExportAttribute
- ReceiverExportAttribute
- AuroraExportValueKind
- AuroraParamAttribute
- AuroraGeneratedExportAttribute
- AuroraGeneratedConstantAttribute
- MatchFailure
- MatchLevel
- IAuroraNativeInstance
- INativeTypedDocument
- AuroraNativeObject
- AuroraNativeObjectAttribute
- 运行时值
- ScriptDatum
- ValueKind
- ScriptObject
- ScriptArray
- ScriptType
- TypeAccess
- ObjectFlags
- NumberValue
- Int64Value
- UInt64Value
- StringValue
- BooleanValue
- NullValue
- ScriptDate
- ScriptError
- ScriptHashMap
- ScriptRegex
- ScriptProxy
- StringBuffer
- ScriptEnumerator
- ScriptFunctionDelegate
- ScriptMethodDelegate
- ClosureFunction
- CLR 互操作
- 宿主 TDoc
- 扩展包
- 序列化与调试
- 异常与诊断