输入/搜索内容
欢迎使用优宽量化交易平台
编程语言
JavaScript
TypeScript
Python
C++
My语言(麦语言)
PINE语言
Blockly可视化
Workflow工作流
支持的协议
密钥安全性
实盘
策略库
托管者
部署托管者
一键租用托管者
手动部署托管者
托管者操作注意事项
全局指定IP地址
命令行版本托管者程序的参数
实盘数据迁移
托管者监控
交易所
策略编辑器
回测系统
策略入口函数
策略框架与API函数
模板类库
策略参数
交互控件
商品期货
期权交易
股票证券
C++策略编写说明
JavaScript策略编写说明
内置库
扩展API接口
MCP 服务
交易终端
数据探索
Alpha因子分析工具
调试工具
远程编辑
完整策略的导入与导出
多语言支持
实盘、策略分组
实盘展示
策略分享与出租
实盘消息推送
实盘报错、异常退出的常见原因
交易所特殊说明、兼容记录

由于JavaScript语言自身的限制(JavaScript语言内置字符串仅支持ASCII与UTF-16编码,为避免数据丢失),当遇到无法编码的字符串时将返回ArrayBuffer类型。优宽量化平台的所有API接口中,可以传入字符串参数的地方均支持传入ArrayBuffer类型。

以下示例说明了这一特性:

javascript
function stringToHex(str) { let hex = ''; for (let i = 0; i < str.length; i++) { const charCode = str.charCodeAt(i).toString(16); hex += charCode.length === 1 ? '0' + charCode : charCode; } return hex; } function main() { const inputString = "abc\uD842\uDFB7123"; // 该"\uD842\uDFB7"字符的Unicode码点超出了16位范围 // const inputString = "abcG123"; // 如果使用abcG123字符串测试,则变量outputD不会被赋值为ArrayBuffer // 使用Encode函数将inputString编码为十六进制格式 const encodedHex = Encode("raw", "string", "hex", inputString); Log(encodedHex); // 内容为:61 62 63 f0a0aeb7 31 32 33 // 使用自定义的stringToHex函数编码,由于无法正确处理"\uD842\uDFB7"字符,导致十六进制编码错误 const manuallyEncodedHex = stringToHex(inputString); Log(manuallyEncodedHex); // 内容为:61 62 63 d842dfb7 31 32 33 // 成功从十六进制编码还原为字符串(变量inputString) const decodedString = Encode("raw", "hex", "string", encodedHex); Log(decodedString); // 无法正确解码,返回ArrayBuffer类型,即变量outputD为ArrayBuffer const outputD = Encode("raw", "hex", "string", manuallyEncodedHex); Log(outputD); // 验证返回的ArrayBuffer类型变量outputD const bufferD = new Uint8Array(outputD); let hexBufferD = ''; for (let i = 0; i < bufferD.length; i++) { hexBufferD += bufferD[i].toString(16).padStart(2, '0'); } Log(hexBufferD); // 61 62 63 d842dfb7 31 32 33 }