kindring hace 3 años
padre
commit
fe651ee2fa
Se han modificado 1 ficheros con 2 adiciones y 2 borrados
  1. 2 2
      js/进制转换采坑.md

+ 2 - 2
js/进制转换采坑.md

@@ -4,7 +4,7 @@
 
   在某次使用js操作`innfos`机器人时,使用`udp`进行连接后需要发送机械臂位置实现位置控制,`innfos`使用16进制编码进行通信.数据需要转换为32位进行发送。
 
-  初始方案使用js自带的函数进行类型转换,将计算结果直接进行`toString`操作,传入参数`16`告诉转换为16进制值,直接使用`toString`函数转换成的`hex`进制字符串会出现一些问题.印象比较深刻的问题是转换数值小于16的值时会出现首字为0情况下自动忽略0. 需要手动在前方进行添加 0 
+  初始方案使用js自带的函数进行类型转换,将计算结果直接进行`toString`操作,传入参数`16`告诉转换为16进制值,直接使用`toString`函数转换成的`hex`进制字符串会出现一些问题.印象比较深刻的问题是转换数值在某些情况下会出现首字为0,在该情况下js会自动忽略0. 需要手动在前方进行添加 0 
 
 ```javaScript
 // 比如要转换的值为15时,会返回F 但是进行通信需要的数据为 0F 
@@ -18,7 +18,7 @@
 //比如 -987654 转换为16进制 "-f1206"
 (-987654).toString(16)//> "-f1206"
 ```
-
+## 解决问题
 2. **解决思路**
 
   首先得清楚为什么会这样,在js中使用的是有32位符号数,当时我用`win`计算器应该是64位的,找出了一些规律.但是我要通信的对象使用的是32位无符号数,尝试使用`win`的计算器生成的16进制值发送是可行的.于是问题变为了在js中如何生成32位无符号16进制数了.