小程序
小游戏
企业微信
微信支付
扫描小程序码分享
在真机调试下是能正常调用getBigInt64,但发版后就不能调用getBigInt64方法了。基础库已经升级到了2.13.1, iPhone设备上会有这个问题,安卓没有问题。
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
这个问题你解决了嘛,我也遇到这个问题了,难搞啊
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
这边测试了iPhone 6 (IOS 12.4.2)和 iPhone 11 (IOS 14.0)都有这个问题;
微信版本号:7.0.17
错误截图:
测试代码:
const buffer = new ArrayBuffer(8)
const dataView = new DataView(buffer)
dataView.setUint16(0, 0)
dataView.setUint16(2, 0)
dataView.setUint16(4, 0)
dataView.setUint16(6, 100)
try {
console.log('dataView.getBigInt64 value', dataView.getBigInt64().toString())
} catch (err) {
console.error(err)
}
安卓平台是可以正常工作的:
更神奇的是在真机调试模式下iPhone平台也是能工作的,预览和发版后是不能工作的
你好,麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html),提供下具体错误信息截图看看。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
这个问题你解决了嘛,我也遇到这个问题了,难搞啊
// 将 64 位整数值分成两份 32 位整数值
const left = littleEndian?dataview.getUint32(byteOffset, littleEndian):dataview.getInt32(byteOffset, littleEndian);
const right = littleEndian?dataview.getInt32(byteOffset + 4, littleEndian):dataview.getUint32(byteOffset + 4, littleEndian);
// 合并两个 32 位整数值
const combined = littleEndian ? left + 2 ** 32 * right : 2 ** 32 * left + right;
if (!Number.isSafeInteger(combined))
//超出number最大值会丢失精度 9007199254740991
console.warn(combined, 'exceeds MAX_SAFE_INTEGER. Precision may be lost');
return combined;
}
这边测试了iPhone 6 (IOS 12.4.2)和 iPhone 11 (IOS 14.0)都有这个问题;
微信版本号:7.0.17
错误截图:
测试代码:
const buffer = new ArrayBuffer(8)
const dataView = new DataView(buffer)
dataView.setUint16(0, 0)
dataView.setUint16(2, 0)
dataView.setUint16(4, 0)
dataView.setUint16(6, 100)
try {
console.log('dataView.getBigInt64 value', dataView.getBigInt64().toString())
} catch (err) {
console.error(err)
}
安卓平台是可以正常工作的:
更神奇的是在真机调试模式下iPhone平台也是能工作的,预览和发版后是不能工作的
你好,麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html),提供下具体错误信息截图看看。
微信版本号:7.0.17
错误截图:
测试代码:
const buffer = new ArrayBuffer(8)
const dataView = new DataView(buffer)
dataView.setUint16(0, 0)
dataView.setUint16(2, 0)
dataView.setUint16(4, 0)
dataView.setUint16(6, 100)
try {
console.log('dataView.getBigInt64 value', dataView.getBigInt64().toString())
} catch (err) {
console.error(err)
}
安卓平台是可以正常工作的:
更神奇的是在真机调试模式下iPhone平台也是能工作的,预览和发版后是不能工作的