日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

JS进制转换总结

發布時間:2023/12/19 综合教程 24 生活家
生活随笔 收集整理的這篇文章主要介紹了 JS进制转换总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題

  如:0xf5 轉 十進制, 使用parseInt('f5', 16) 進行轉換,結果為:245。結果沒錯,但不是我想要的結果。

  JS 在轉換時,把 0xf5 看作是多字節的,高位字節補 0。完整格式為:0x000000f5 或者 0x0000000000000000f5 (反正比0xf5單字節大) (二進制為 00000000000000000000000011110101), 其轉換為十進制自然是 245。

  但是我想要的是把 0xf5 看作是單字節的。格式為:0xf5(二進制為 11110101),其轉換結果為:-11。

   

解決方法

  問題原因就是,js默認把0xf5看作是一個多字節的。那么解決方法就是把0xf5看作是單字節的或者把0xf5看作是多字節有符號的(也就是 0xfffffff5)。

  解決辦法有三個:

  1:使用Int8Array 包裝一下:

  

  Int8Array 為二進制補碼8位有符號整數的數組,并默認轉成了10進制。取出來即可。

  

  而如果使用Uint8Array:則是無符號的,結果為 245。

  

  

  2:(不推薦)將高位字節轉換為1,也就是把 00000000000000000000000011110101 改為11111111111111111111111111110101:

  直接使用按位或操作:將 0xf5 按位或 0xffffff00:

  

  這種方法是強制將高位字節改為 1。此方法弊端是如果數字較大或較小,或的值就需要跟著變。

  3:此種方法跟第二種差不多,但更通用。

  此種方法是使用按位與操作:將0xf5 按位與 0xffffffff,但要注意的是,0xf5 與 0xffffffff 的字節必須一樣。也就是把 0xf5 看作是多字節有符號的,修改為 0xfffffff5。

  

  0xfffffff5 與 0xffffffff 操作后還是 0xfffffff5,但他已經是有符號的了。所以結果為有符號的。

  

  

總結(進制轉換)

  1:有符號轉換

    十六進制 轉 十進制:

1 parseInt(new Int8Array(['0xf5'])) // -11
2 new Int8Array(['0xf5'])[0]  //-11
3 parseInt('0xffffff' + 'f5' & '0xffffffff') // -11

    十進制 轉 十六進制:

1 new Uint8Array(['-11'])[0].toString(16) // f5

  

  2:無符號轉換

    十六進制 轉 十進制:

1 parseInt(new Uint8Array(['0xf5'])) //245
2 new Uint8Array(['0xf5']) //245
3 parseInt('0x' + 'f5' & '0xffffffff') //245
4 parseInt('f5', 16) //245
5 parseInt(0xf5) //245

    十進制 轉 十六進制:

1 parseInt(245).toString(16) // f5
2 new Uint8Array(['245'])[0].toString(16) //f5

parseInt(0xfffffff5)

  在轉換 0xfffffff5時,其結果為 4294967285。

  所以js在轉換的時候,把0xfffffff5 看作了一個比4字節還大的數,所以高位為0,結果就為4294967285。

  

  

  在解決方法的第三點:需要兩者字節一致,就是限制在某個字節下。也可以這樣:0xffffffffffff & 0xfffffffffff5 // -11。

  經過測試,最起碼限定在 4字節或以上。

  

Welcome to my blog!

總結

以上是生活随笔為你收集整理的JS进制转换总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。