前言

在做微信小程序开发,向蓝牙发送信息时,遇到这样一个错误 Offset is outside the bounds of the DataView

开始

  hexStringToArrayBuffer(str) {console.log('开始咋转化' + str)var count = str.length / 2;console.log(count)let buffer = new ArrayBuffer(count);let dataView = new DataView(buffer);for (var i = 0; i < count; i++) {var curCharCode = parseInt(str.substr(i * 2, 2), 16);dataView.setUint8(i, curCharCode);}return buffer;}let data = "31940000000000000000119400041960000"
console.log(hexStringToArrayBuffer(data))

问题出现

注意!count长度为17.5,导致去创建ArrayBuffer数组的时候出现问题。也就是协议指令长度不够除2

解决方法

1.需要协议指令自行补充长度,count必须是整数

2.前端创建ArrayBuffer的时候四舍五入,如下

 hexStringToArrayBuffer(str) {console.log('开始咋转化'+str)var count = str.length / 2;console.log(count)if (count.toString().indexOf('.') != -1) {count = parseInt(count) + 1  // 有.5就加 1count = parseInt(count) // 或者不加}console.log(count)let buffer = new ArrayBuffer(count);let dataView = new DataView(buffer);for (var i = 0; i < count; i++) {var curCharCode = parseInt(str.substr(i * 2, 2), 16);dataView.setUint8(i, curCharCode);}return buffer;}
let data = "31940000000000000000119400041960000"
console.log(hexStringToArrayBuffer(data))

Offset is outside the bounds of the DataView相关推荐

  1. Offset is outside the bounds of the DataView;at api notifyBLECharacteristicValueChanged success call

    在做微信小程序开发,向蓝牙发送信息时,遇到这样一个错误 错误解释: 数组下标越界 报错原因: 我在设置ArrayBuffer时,直接设置过少,导致在循环通过蓝牙传递信息时,造成数组下标越界. 解决办法 ...

  2. untiy发布webgl开发记录

    安装Unity3d并导入unitypackage 版本选择: untiy发布webgl经测试 2020版本系列的PC端网页打开都会报错,不能正常打开: 2019系列的发布后PC端可以正常打开并运行,一 ...

  3. Unity WebGL错误集锦

    ips: 0 Unity的PlayerSettings的otherSettings或者Publish Settings里面的Enable Exceptions里面选择Full StackTrace , ...

  4. JavaScript与二进制数据的恩怨情仇

    文章出自个人博客https://knightyun.github.io/2020/03/09/js-binary-data,转载请申明 编程江湖,终日血雨腥风,论及二进制数据,又有多少豪杰谈笑风生,风 ...

  5. 上传图片的时候,ios手机的图片会旋转90°

    1.问题:在html5中利用canvas对上传图片压缩的时候,ios手机竖着拍照时,图片会旋转90°,其他情况正常. 2.解决方法:获取拍照角度,对Ios竖着拍的照片进行角度处理 3.利用exif.j ...

  6. golang实现给图片加水印

    2019独角兽企业重金招聘Python工程师标准>>> 最近跟在写golang图片加水印的方法,这里用的是一些基本的功能. package mainimport ("fmt ...

  7. 掌握 Linux 调试技术【转】

    转自:https://www.ibm.com/developerworks/cn/linux/sdk/l-debug/index.html 您可以用各种方法来监控运行着的用户空间程序:可以为其运行调试 ...

  8. 温故而知新,UI学习中的大部分控件及常用的基础都整理了一下,很长~~~~~~~~~很长!!!!!!!...

    生命周期,生命周期,生命周期,重要的事要说三遍,战五渣的我最常用的好像只有Viewwillappear吧 - (BOOL)application:(UIApplication *)applicatio ...

  9. ios图片轮播 (基础篇——UIScrollView实现方式)

    简述 : 人生不发返程的车票,一旦出发了,决不能返回. 人生只有一次,无悔的人生才是成功的人生,不要期待与奢望 "下一次" 如何. 过去的人生中,我们的路程中可能充满了欢笑与忧伤, ...

  10. Linux内核 eBPF:Hacking Linux USDT with Ftrace

    Linux内核 eBPF Hacking Linux USDT with Ftrace Hacking Linux USDT with Ftrace usdt (ftrace) · GitHub lt ...

最新文章

  1. 安卓开发20:动画之Animation 详细使用-主要通过java代码实现动画效果
  2. JAVA关系表达式解析微引擎
  3. 全球大学生超级计算机竞赛排名,清华团队蝉联世界大学生超级计算机竞赛总冠军...
  4. SpringBoot 上传文件(单个、多个文件)
  5. 解决Homebrew报错Error: Failure while executing; git clone https://github.com/Homebrew/homebrew-core....
  6. B站发布2020年一季度财报:月活用户达1.72亿,日活用户突破5000万
  7. leetcode 刷题指南
  8. python微博接口_Python使用新浪微博API发送微博的例子
  9. VX线报机器人的使用
  10. Rainmeter监控GPU
  11. java IO流简述
  12. oracle RAC 集群无法启动
  13. 3D-CVF论文解读
  14. java多线程12:阻塞队列Queue
  15. 亲身体验 北京-环球嘉年华!
  16. 如何查看java对象所占内存大小
  17. Java EE结构理解 与Dao模式 no7.
  18. 用 Python 快速获取基金持仓增减情况 | 更新版
  19. 邵老师计算机,《计算机公课核心讲义》—邵老师主编.doc
  20. 依生生物拟赴港上市:旗下狂犬病疫苗生产中断5年,再度陷入亏损

热门文章

  1. CDN与智能DNS原理和应用 - 学习/实践
  2. win10怎么查看自己笔记本电脑电池的损耗情况
  3. MindMap学习使用
  4. 怎么理解JS Promise
  5. Android APK瘦身优化
  6. java基础—输入/输出
  7. 手把手教你搭建小程序
  8. 360度全景视频html,360度全景视频是怎么拍摄出来的?
  9. 使用FFmpeg进行360全景视频格式转换:filter v360
  10. 解决Ubuntu 20.04 虚拟机克隆出多台造成的IP地址冲突的问题