kindring 3 年之前
父節點
當前提交
60115155a9
共有 1 個文件被更改,包括 2 次插入0 次删除
  1. 2 0
      js/进制转换采坑.md

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

@@ -3,6 +3,7 @@
 1. **问题描述**
 1. **问题描述**
   在某次使用js操作`innfos`机器人时,使用`udp`进行连接后需要发送机械臂位置实现位置控制,`innfos`使用16进制编码进行通信.数据需要转换为32位进行发送。
   在某次使用js操作`innfos`机器人时,使用`udp`进行连接后需要发送机械臂位置实现位置控制,`innfos`使用16进制编码进行通信.数据需要转换为32位进行发送。
   初始方案使用js自带的函数进行类型转换,将计算结果直接进行`toString`操作,传入参数`16`告诉转换为16进制值,直接使用`toString`函数转换成的`hex`进制字符串会出现一些问题.印象比较深刻的问题是转换数值小于16的值时会出现首字为0情况下自动忽略0. 需要手动在前方进行添加 0 
   初始方案使用js自带的函数进行类型转换,将计算结果直接进行`toString`操作,传入参数`16`告诉转换为16进制值,直接使用`toString`函数转换成的`hex`进制字符串会出现一些问题.印象比较深刻的问题是转换数值小于16的值时会出现首字为0情况下自动忽略0. 需要手动在前方进行添加 0 
+
 ```javaScript
 ```javaScript
 // 比如要转换的值为15时,会返回F 但是进行通信需要的数据为 0F 
 // 比如要转换的值为15时,会返回F 但是进行通信需要的数据为 0F 
 (15).toString(16);// F
 (15).toString(16);// F
@@ -10,6 +11,7 @@
 ```
 ```
 
 
   该方法转换正整数时可以正常工作,但是转换负整数时无法正常工作.当时排查了很久,后面发现是该方法转换负整数时转换为了有符号数,会在数据前方添加一个负数符号即`-`。当时想的是直接移除负号,但是效果根本不行,移除负号就是正数了。当时找了许久。并没有直接找到方案
   该方法转换正整数时可以正常工作,但是转换负整数时无法正常工作.当时排查了很久,后面发现是该方法转换负整数时转换为了有符号数,会在数据前方添加一个负数符号即`-`。当时想的是直接移除负号,但是效果根本不行,移除负号就是正数了。当时找了许久。并没有直接找到方案
+
 ```javascript
 ```javascript
 //比如 -987654 转换为16进制 "-f1206"
 //比如 -987654 转换为16进制 "-f1206"
 (-987654).toString(16)//> "-f1206"
 (-987654).toString(16)//> "-f1206"