kindring 3 éve
szülő
commit
6155f8bc17
1 módosított fájl, 2 hozzáadás és 0 törlés
  1. 2 0
      js/进制转换采坑.md

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

@@ -8,11 +8,13 @@
 (15).toString(16);// F
 (15).toString(16);// F
 
 
 ```
 ```
+
   该方法转换正整数时可以正常工作,但是转换负整数时无法正常工作.当时排查了很久,后面发现是该方法转换负整数时转换为了有符号数,会在数据前方添加一个负数符号即`-`。当时想的是直接移除负号,但是效果根本不行,移除负号就是正数了。当时找了许久。并没有直接找到方案
   该方法转换正整数时可以正常工作,但是转换负整数时无法正常工作.当时排查了很久,后面发现是该方法转换负整数时转换为了有符号数,会在数据前方添加一个负数符号即`-`。当时想的是直接移除负号,但是效果根本不行,移除负号就是正数了。当时找了许久。并没有直接找到方案
 ```javascript
 ```javascript
 //比如 -987654 转换为16进制 "-f1206"
 //比如 -987654 转换为16进制 "-f1206"
 (-987654).toString(16)//> "-f1206"
 (-987654).toString(16)//> "-f1206"
 ```
 ```
+
 2. **解决思路**
 2. **解决思路**
   首先得清楚为什么会这样,在js中使用的是有32位符号数,当时我用`win`计算器应该是64位的,找出了一些规律.但是我要通信的对象使用的是32位无符号数,尝试使用`win`的计算器生成的16进制值发送是可行的.于是问题变为了在js中如何生成32位无符号16进制数了.
   首先得清楚为什么会这样,在js中使用的是有32位符号数,当时我用`win`计算器应该是64位的,找出了一些规律.但是我要通信的对象使用的是32位无符号数,尝试使用`win`的计算器生成的16进制值发送是可行的.于是问题变为了在js中如何生成32位无符号16进制数了.
 > [!tip]
 > [!tip]