js arrayBuffer 字節序問題,小端法,大端法


原文博客

    {
      var buffer = new ArrayBuffer(2)
      var bytes = new Uint16Array(buffer)

      bytes[0] = (65 << 8) + 66
      var blob = new Blob([buffer], {
        type: 'text/plain'
      })
      var dataUri = window.URL.createObjectURL(blob)
      open(dataUri) // BA 受系統的字節序影響,小端法
    } 

    {
      let buffer = new ArrayBuffer(2)
      let view = new DataView(buffer)
      let value = (65 << 8) + 66
      view.setUint16(0, value, /*true*/) // 或許默認使用大端法,true設置為小端法
      var blob = new Blob([buffer], {
        type: 'text/plain'
      })
      var dataUri = window.URL.createObjectURL(blob)
      open(dataUri) // AB DataView不用考慮平台字節序問題
    }

假如內存地址是0x0-0x100,那么可以理解為地址低位<=>地址高位

存儲模式

大端模式:數據高位在地址低位,數據低位在地址高位

小端模式:數據低位在地址低位,數據高位在地址高位

mov word ptr ds:[0x100], 0x1234

如果大端模式: 12 34

如果小端模式: 34 12


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM