16進数とブザーの相互変換

9937 ワード

16進数とブザーの相互変換
  • バイトは8ビットで、16進数の2桁に相当しますので、表示を便利にするために、16進数で表示される場合が多いですが、本質的には2進数です.例えば、ブザーの中の11111111がプリントアウトした後に、ff
  • が表示されます.
    まず16進数を話してください.
  • は、行列があると仮定して、[1 a,2 b,3 c,4 d,5 e,6 f]バfferに変換したいです.コードは以下の通りです.
    var array = ['1a', '2b', '3c', '4d', '5e', '6f']
    var hex_array = array.map(el=>parseInt(el, 16))
    var uarray = new Uint8Array(hex_array)
    var buf = Buffer.from(uarray)
    console.log(buf)
    
    //     
    <Buffer 1a 2b 3c 4d 5e 6f>
    
  • 上記の考え方に基づいて、関数としてカプセル化することができます.
  • // 16   buffer
    function hex_to_buffer(__array){
        if(!Array.isArray(__array)){
            return hex_array([__array])
        }
        var hex_array = __array.map(el=>parseInt(el, 16))
        var uarray = new Uint8Array(hex_array)
        return Buffer.from(uarray)
    }
    
    ブザーが16進に回転します
  • 以上の例を例に挙げて、どうやってブザーから16進に移行するかを実現します.コードは以下の通りです.
    function hex_to_buffer(__array){
        if(!Array.isArray(__array)){
            return hex_array([__array])
        }
        var hex_array = __array.map(el=>parseInt(el, 16))
        var uarray = new Uint8Array(hex_array)
        return Buffer.from(uarray)
    }
    
    var array = ['1a', '2b', '3c', '4d', '5e', '6f']
    var buf = hex_to_buffer(array) //   buffer 
    // buffer 16  
    var uarray = Array.prototype.slice.call(buf)
    var hex_array = uarray.map(el=>Number(el).toString(16))
    console.log(hex_array)
    
  • 上記の考え方に基づいて、関数をカプセル化することができます.
  • // buffer 16  
    function buffer_to_hex(__buffer){
        var uarray = Array.prototype.slice.call(__buffer)
        return uarray.map(el=>Number(el).toString(16))
    }
    
    大功が成る