讓我們考慮以下情況。Byte Array to Uint64 as a String
在GO例程創建一個字節數組,其中在8個字節大端[77, 101, 130, 33, 7, 252, 253, 82]
包一答:64數5577006791947779410
。
在JavaScript代碼中,我收到這些字節爲Uint8Array
。我們知道JavaScript目前不支持Uint64作爲安全的數字類型,並且不能對大於32位的整數執行按位操作,所以像buf[0] << 56
這樣的東西將不會工作。
那麼什麼是這些字節直接解碼爲數字字符串"5577006791947779410"
?
P.S.我知道有plentyof 與JavaScript中的大整數的工作,但通常他們是巨大的,並提供大量的數學運算,我不需要在這裏。我正在尋找一個簡單的現代直接解決方案只是解碼BE包裝Uint64和Int64字節到數字字符串。你有什麼想法?
謝謝你的回覆!這對'uint64'似乎很有效。我需要做些什麼修改才能使它與'int64'一起工作呢?我在這裏創建了一個操場:https://jsfiddle.net/wcqLj1qg/。 – VisioN
我已經更新了我的答案,並將其上傳到https://codepen.io/stephtr/pen/brBvxr 需要的修改是(顯然)添加減號,否定位和減1。 – Stephan
可以使它稍微更緊湊通過將'byte> 0'更改爲'byte',因爲'byte'總是正的。另外'j == bytes.length - 1? 0:1'可以簡單地寫成'j!= bytes.length - 1',因爲布爾將被強制轉換爲數字:) – csander