成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

javascript字節(jié)byte處理【經(jīng)典筆記】

laznrbfe / 3878人閱讀

摘要:進(jìn)制轉(zhuǎn)換在線工具獲取的高位和低位獲取高四位獲取低四位高位和低位合并字節(jié)高位空格低位例如二進(jìn)制轉(zhuǎn)換成進(jìn)制二進(jìn)制轉(zhuǎn)換十六進(jìn)制十六進(jìn)制字符串轉(zhuǎn)字節(jié)數(shù)組十六進(jìn)制字符串轉(zhuǎn)字節(jié)數(shù)組每個字符串轉(zhuǎn)換轉(zhuǎn)為符合進(jìn)制字符串字節(jié)數(shù)組轉(zhuǎn)十六進(jìn)制字符串字節(jié)數(shù)組轉(zhuǎn)

進(jìn)制轉(zhuǎn)換在線工具
獲取byte的高4位bit和低4位bit
function getHeight4(ata){//獲取高四位
    int height;
    height = ((data & 0xf0) >> 4);
    return height;
}

function getLow4(data){//獲取低四位
    int low;
    low = (data & 0x0f);
    return low;
}
高4位和低4位合并
1字節(jié) = 高4位(空格)低4位
例如:00001001 = 0000 1001

二進(jìn)制轉(zhuǎn)換成16進(jìn)制
1001(二進(jìn)制) 轉(zhuǎn)換 0x09(十六進(jìn)制)
十六進(jìn)制字符串轉(zhuǎn)字節(jié)數(shù)組
/**
   * 十六進(jìn)制字符串轉(zhuǎn)字節(jié)數(shù)組
   * 每2個字符串轉(zhuǎn)換
   * 903132333435363738 轉(zhuǎn)為 [-112, 49, 50, 51, 52, 53, 54, 55, 56]
   * @param {String} str 符合16進(jìn)制字符串
   */
  Str2Bytes(str) {
    var pos = 0;
    var len = str.length;
    if (len % 2 != 0) {
      return null;
    }
    len /= 2;
    var hexA = new Array();
    for (var i = 0; i < len; i++) {
      var s = str.substr(pos, 2);
      var v = parseInt(s, 16);
      if(v >=127) v = v-255-1
      hexA.push(v);
      pos += 2;
    }
    return hexA;
  },
字節(jié)數(shù)組轉(zhuǎn)十六進(jìn)制字符串
/**
   * 字節(jié)數(shù)組轉(zhuǎn)十六進(jìn)制字符串
   * [-112, 49, 50, 51, 52, 53, 54, 55, 56] 轉(zhuǎn)換 903132333435363738
   * @param {Array} arr 符合16進(jìn)制數(shù)組
   */
  Bytes2Str(arr) {
    var str = "";
    for (var i = 0; i < arr.length; i++) {
      var tmp;
      var num=arr[i];
  ????if (num < 0) {
  ????//此處填坑,當(dāng)byte因為符合位導(dǎo)致數(shù)值為負(fù)時候,需要對數(shù)據(jù)進(jìn)行處理
  ??????tmp =(255+num+1).toString(16);
  ????} else {
  ??????tmp = num.toString(16);
  ????}
      if (tmp.length == 1) {
        tmp = "0" + tmp;
      }
      str += tmp;
    }
    return str;
  },
十六進(jìn)制字符串轉(zhuǎn)數(shù)組
 /**
   * 十六進(jìn)制字符串轉(zhuǎn)數(shù)組
   * 1185759ac35a91143f97037002b1a266 轉(zhuǎn)換 ["11", "85", "75", "9a", "c3", "5a", "91", "14", "3f", "97", "03", "70", "02", "b1", "a2", "66"]
   * @param {String} str 十六進(jìn)制字符串
   */
  Str2Arr(str) {
    var pos = 0;
    var len = str.length;
    if (len % 2 != 0) {
      return null;
    }
    len /= 2;
    var hexA = new Array();
    for (var i = 0; i < len; i++) {
      var s = str.substr(pos, 2);
      hexA.push(s);
      pos += 2;
    }
    return hexA;
  },
十六進(jìn)制數(shù)組進(jìn)行異或
/**
   * 十六進(jìn)制數(shù)組進(jìn)行異或
   * @param {Array} arr 十六進(jìn)制數(shù)組
   */
  BytesDes(arr) {
    var des = 0
    for (var i = 0; i < arr.length; i++) {
      des ^= parseInt(arr[i], 16)
    }
    return des.toString(16).toUpperCase();
  },
十進(jìn)制轉(zhuǎn)十六進(jìn)制
/**
   * 十進(jìn)制轉(zhuǎn)十六進(jìn)制
   * 15 轉(zhuǎn) 0F
   * @param {Number} num 十進(jìn)制數(shù)字
   */
  toHex(num) {
    return ("0" + (Number(num).toString(16))).slice(-2).toUpperCase()
  }
二進(jìn)制轉(zhuǎn)十六進(jìn)制
/**
   * 二進(jìn)制轉(zhuǎn)十六進(jìn)制
   * 00001001 轉(zhuǎn) 09
   * @param {String} str 二進(jìn)制字符串
   */
  binTohex(str) {
    let hex_array = [{ key: 0, val: "0000" }, { key: 1, val: "0001" }, { key: 2, val: "0010" }, { key: 3, val: "0011" }, { key: 4, val: "0100" }, { key: 5, val: "0101" }, { key: 6, val: "0110" }, { key: 7, val: "0111" },
    { key: 8, val: "1000" }, { key: 9, val: "1001" }, { key: "a", val: "1010" }, { key: "b", val: "1011" }, { key: "c", val: "1100" }, { key: "d", val: "1101" }, { key: "e", val: "1110" }, { key: "f", val: "1111" }]
    let value = ""
    let list = []
    if (str.length % 4 !== 0) {
      let a = "0000"
      let b = a.substring(0, 4 - str.length % 4)
      str = b.concat(str)
    }
    while (str.length > 4) {
      list.push(str.substring(0, 4))
      str = str.substring(4);
    }
    list.push(str)
    for (let i = 0; i < list.length; i++) {
      for (let j = 0; j < hex_array.length; j++) {
        if (list[i] == hex_array[j].val) {
          value = value.concat(hex_array[j].key)
          break
        }
      }
    }
    return value
  }
十六進(jìn)制數(shù)字和ASCII字符之間轉(zhuǎn)換
var hex="0x10";//十六進(jìn)制  
var charValue = String.fromCharCode(hex);//生成Unicode字符  
var charCode = charValue.charCodeAt(0);//獲取指定字符的十進(jìn)制表示.  
var hexOri="0x"+charCode.toString(16);;//將int值轉(zhuǎn)換為十六進(jìn)制  

hex:0x10
charValue:+
charCode:16
hexOri:0x10
十六進(jìn)制數(shù)組轉(zhuǎn)ASCLL編碼
/**
   * 十六進(jìn)制字符串轉(zhuǎn)ASCLL編碼
   * 3132333435363738 轉(zhuǎn)換 12345678
   * @param {String} str 十六進(jìn)制字符串
   */
  HexToAscll(str) {
    var pos = 0;
    var len = str.length/2;
    var hexA = "";
    for (var i = 0; i < len; i++) {
      var s = str.substr(pos, 2);
      hexA += String.fromCharCode(`0x${s}`);
      pos += 2;
    }
    return hexA;
  },

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/103865.html

相關(guān)文章

  • es6學(xué)習(xí)筆記-字符串的擴(kuò)展_v1.0_byKL

    摘要:學(xué)習(xí)筆記字符串的擴(kuò)展字符的表示法允許使用的形式表示一個字符,但在之前,單個碼點僅支持到,超出該范圍的必須用雙字節(jié)形式表示,否則會解析錯誤。返回布爾值,表示參數(shù)字符串是否在源字符串的頭部。,是引入了字符串補(bǔ)全長度的功能。 es6學(xué)習(xí)筆記-字符串的擴(kuò)展_v1.0 字符的Unicode表示法 JavaScript 允許使用uxxxx的形式表示一個字符,但在 ES6 之前,單個碼點僅支持u00...

    JaysonWang 評論0 收藏0
  • Java IO學(xué)習(xí)筆記

    摘要:此類中的方法在關(guān)閉此流后仍可被調(diào)用,而不會產(chǎn)生任何。主要的功能是從緩沖區(qū)讀取字節(jié)構(gòu)造函數(shù)創(chuàng)建一個,使用作為其緩沖區(qū)數(shù)組。緩沖區(qū)會隨著數(shù)據(jù)的不斷寫入而自動增長。 內(nèi)存操作流 之前的所有的流操作都是針對文件的,但是有時候只是想要實現(xiàn)數(shù)據(jù)間轉(zhuǎn)換,此時如果我們想要創(chuàng)建一個文件然后再刪除文件,那樣顯得有點麻煩,因此此時的內(nèi)存操作流就顯得很適合這類的操作,因為它只是在內(nèi)存中存儲,并不會真正的創(chuàng)建文...

    oliverhuang 評論0 收藏0
  • Java基礎(chǔ)語法知識你真的都會嗎?

    摘要:而所有的數(shù)據(jù)運(yùn)算都是采用補(bǔ)碼進(jìn)行的。補(bǔ)碼解決負(fù)數(shù)加法運(yùn)算正負(fù)零問題,彌補(bǔ)了反碼的不足。通過使用訪問修飾符可以使實例變量對子類可見暫時在學(xué)習(xí)基礎(chǔ)語法知識的時候可以暫時忽略實例變量這部分內(nèi)容,這部分內(nèi)容主要被使用在面向?qū)ο蟮牟糠?,但是極其重要。 showImg(https://segmentfault.com/img/remote/1460000019264541?w=600&h=242)...

    DirtyMind 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<