最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

前端處理ASCII碼轉(zhuǎn)HEX碼及校驗(yàn)具體實(shí)現(xiàn)

 更新時(shí)間:2025年03月11日 10:36:14   作者:愛在西元前1s  
這篇文章主要介紹了在JavaScript編程中將ASCII碼轉(zhuǎn)換為十六進(jìn)制(HEX)碼的需求和場景,包括Wi-Fi配置、數(shù)據(jù)加密和網(wǎng)絡(luò)協(xié)議傳輸?shù)?文章詳細(xì)描述了HEX編碼的原理和作用,并提供了具體實(shí)現(xiàn)的示例,需要的朋友可以參考下

前言

在JavaScript編程中,將ASCII碼轉(zhuǎn)換為十六進(jìn)制(Hex)碼的需求通常出現(xiàn)在處理字符編碼、數(shù)據(jù)校驗(yàn)、網(wǎng)絡(luò)通信等場景。在某些應(yīng)用場景下,我們需要將 ASCII 字符串轉(zhuǎn)換成 HEX 碼,這通常用于加密、網(wǎng)絡(luò)通信或其他需要將文本數(shù)據(jù)編碼為十六進(jìn)制格式的情況。特別是在網(wǎng)絡(luò)協(xié)議、密碼設(shè)置、Wi-Fi 配置等領(lǐng)域,往往要求密碼或數(shù)據(jù)以 HEX 格式進(jìn)行傳輸或存儲(chǔ)。

HEX編碼簡介

HEX編碼也稱之為Base16,它將每一個(gè)字節(jié)(8位)表示的十六進(jìn)制內(nèi)容,用兩個(gè)十六進(jìn)制數(shù)字(0-9, a-f/A-F)的字符串來顯示。作用是將不可見的、復(fù)雜的字節(jié)數(shù)組數(shù)據(jù),轉(zhuǎn)換為可顯示的字符串?dāng)?shù)據(jù)。

場景示例

  • Wi-Fi 配置:在 Wi-Fi 網(wǎng)絡(luò)的設(shè)置中,密碼可能需要以 HEX 碼格式進(jìn)行提交。例如,在路由器的配置界面,用戶輸入密碼時(shí)可以選擇 ASCII 或 HEX 格式提交密碼。
  • 數(shù)據(jù)加密:某些加密算法使用 HEX 碼來表示數(shù)據(jù)的二進(jìn)制形式,因此需要將 ASCII 字符串轉(zhuǎn)換為 HEX 碼進(jìn)行處理。
  • 網(wǎng)絡(luò)協(xié)議:在一些網(wǎng)絡(luò)協(xié)議中,數(shù)據(jù)通常以 HEX 格式進(jìn)行傳輸,因此需要將用戶輸入的 ASCII 字符串轉(zhuǎn)換為 HEX。

具體實(shí)現(xiàn)

已最近開發(fā)中使用到的舉個(gè)例子 頁面設(shè)計(jì)如下圖所示

用戶界面設(shè)計(jì)

頁面設(shè)計(jì)允許用戶輸入密碼或其他字符串,并選擇輸入方式為ASCII或HEX格式。系統(tǒng)會(huì)根據(jù)用戶選擇的格式進(jìn)行有效性檢查,并轉(zhuǎn)換或校驗(yàn)輸入數(shù)據(jù)。

格式驗(yàn)證與轉(zhuǎn)換

ASCII格式驗(yàn)證

  • 用戶選擇ASCII格式后,系統(tǒng)檢查輸入的字符是否符合ASCII編碼規(guī)范。
  • 根據(jù)實(shí)際要求的密碼強(qiáng)度規(guī)范進(jìn)行校驗(yàn),如果校驗(yàn)通過則直接處理,反之提示用戶密碼強(qiáng)度不符合規(guī)范。

HEX格式驗(yàn)證與轉(zhuǎn)換

  • 用戶選擇HEX格式后,使用pachars函數(shù)檢查輸入是否為有效的HEX字符串。

    pachars(str) {
      var reg = /^[2-7][0-9a-fA-F]$/; // 匹配 HEX 格式:首字符為 2-7,第二個(gè)字符為 0-9 或 a-f/A-F
      var arr = str.match(/.{1,2}/g); // 按每兩個(gè)字符分割字符串
    
      if (!arr) {
        return false;
      }
    
      // 遍歷所有 HEX 字符對(duì)
      for (let i = 0; i < arr.length; i++) {
        /**匹配ASCII碼的16進(jìn)制數(shù)
         * 首 2-7f
         * 尾 1-9 a-F
         * 不匹配20 7F 7f
         * */
        if (!reg.test(arr[i]) || /^(20|7f|7F)$/.test(arr[i])) {
          return false;
        }
      }
    
      // 如果沒有發(fā)現(xiàn)不符合條件的字符,返回成功
      return true;
    }
    

    如果是規(guī)范的HEX碼 則進(jìn)行下一步轉(zhuǎn)Ascll碼校驗(yàn)(注:當(dāng)前Ascll轉(zhuǎn)HEX碼只是在web端進(jìn)行一個(gè)轉(zhuǎn)換校驗(yàn) 實(shí)際下發(fā)底層還是以Ascll下發(fā))

    再通過paword函數(shù)將當(dāng)前用戶輸入的HEX碼轉(zhuǎn)換回Ascll

    paword(str) {
      // 初始化一個(gè)空的數(shù)組,用來存儲(chǔ)轉(zhuǎn)換后的十進(jìn)制數(shù)字
      let buf = [];
    
      // 循環(huán)遍歷字符串,每次取 2 個(gè)字符作為一組
      for (let i = 0; i < str.length; i += 2) {
        // 取出當(dāng)前的 2 個(gè)字符,并將其作為十六進(jìn)制字符串轉(zhuǎn)換為十進(jìn)制數(shù)字
        buf.push(parseInt(str.substring(i, i + 2), 16));
      }
    
      // 返回通過 this.ps() 函數(shù)處理后的數(shù)組
      return this.ps(buf);
    },
    
        
        
    //將一個(gè)數(shù)字?jǐn)?shù)組(通常為十六進(jìn)制的字節(jié)數(shù)組)轉(zhuǎn)換為對(duì)應(yīng)的字符串
    ps(arr) {
      if (typeof arr === 'string') {
        return arr;  // 如果輸入已經(jīng)是字符串,直接返回
      }
    
      let UTF = '', _arr = arr;  // 初始化一個(gè)空字符串 UTF,用于存儲(chǔ)解碼后的字符
      for (let i = 0; i < _arr.length; i++) {
        let one = _arr[i].toString(2);  // 將當(dāng)前的十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制字符串
        let v = one.match(/^1+?(?=0)/);  // 匹配二進(jìn)制字符串中的 UTF-8 字符的開頭部分
    
        if (v && one.length == 8) {
          // 如果匹配到有效的 UTF-8 字符(即以多個(gè) 1 開頭,后面跟著 0)
          let bytesLength = v[0].length;  // 獲取該字節(jié)是幾個(gè)字節(jié)的 UTF-8 編碼
          let store = _arr[i].toString(2).slice(7 - bytesLength);  // 截取對(duì)應(yīng)的 UTF-8 編碼的字節(jié)部分
    
          // 遍歷后續(xù)字節(jié)并提取其有效二進(jìn)制位,構(gòu)建完整的 UTF-8 編碼
          for (let st = 1; st < bytesLength; st++) {
            store += _arr[st + i].toString(2).slice(2);  // 拼接后續(xù)字節(jié)的有效二進(jìn)制位
          }
    
          // 將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為字符,并添加到 UTF 字符串中
          UTF += String.fromCharCode(parseInt(store, 2));
          i += bytesLength - 1;  // 跳過已經(jīng)處理的字節(jié)
        } else {
          // 如果不是 UTF-8 字符,直接按 ASCII 編碼處理
          UTF += String.fromCharCode(_arr[i]);
        }
      }
    
      return UTF;  // 返回解碼后的字符串
    }
    

?然后再使用轉(zhuǎn)換后的Ascll碼進(jìn)行密碼強(qiáng)度規(guī)范校驗(yàn) 如果不滿足則提示報(bào)錯(cuò)信息

參數(shù)驗(yàn)證與最終處理

  • 對(duì)于轉(zhuǎn)換和校驗(yàn)后的結(jié)果,系統(tǒng)進(jìn)一步驗(yàn)證其是否符合指定的格式要求。
  • 如果所有驗(yàn)證都通過,則處理用戶輸入的數(shù)據(jù)(例如,將其發(fā)送到服務(wù)器進(jìn)行進(jìn)一步處理)。
  • 如果驗(yàn)證失敗,則向用戶顯示相應(yīng)的錯(cuò)誤信息,并提示用戶重新輸入。

總結(jié) 

到此這篇關(guān)于前端處理ASCII碼轉(zhuǎn)HEX碼及校驗(yàn)具體實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)前端處理ASCII碼轉(zhuǎn)HEX碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 談?wù)凧S中的!!

    談?wù)凧S中的!!

    !!一般用來將后面的表達(dá)式強(qiáng)制轉(zhuǎn)換為布爾類型的數(shù)據(jù)(boolean),也就是只能是true或者false。下面看看通過本文給大家介紹了JS中的!!,需要的朋友參考下吧
    2017-12-12
  • 淺談PDF.js使用心得

    淺談PDF.js使用心得

    本篇文章主要介紹了淺談PDF.js使用心得,pdf.js 是一個(gè)技術(shù)原型主要用于在 HTML5 平臺(tái)上展示 PDF 文檔,無需任何本地技術(shù)支持。非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-06-06
  • javascript自啟動(dòng)函數(shù)的問題探討

    javascript自啟動(dòng)函數(shù)的問題探討

    自啟動(dòng)函數(shù)想必大家并不陌生吧,在本文將為大家詳細(xì)探討下,感興趣的朋友可不要錯(cuò)過
    2013-10-10
  • JavaScript使用Promise實(shí)現(xiàn)并發(fā)請求數(shù)限制

    JavaScript使用Promise實(shí)現(xiàn)并發(fā)請求數(shù)限制

    本文主要介紹了JavaScript使用Promise實(shí)現(xiàn)并發(fā)請求數(shù)限制,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 如何使用json在前后臺(tái)進(jìn)行數(shù)據(jù)傳輸實(shí)例介紹

    如何使用json在前后臺(tái)進(jìn)行數(shù)據(jù)傳輸實(shí)例介紹

    需要把這些輸入寫入數(shù)據(jù)庫,這里就用到j(luò)son傳入,先看一下后臺(tái)如何生成要傳輸?shù)臄?shù)據(jù),感興趣的朋友可以參考下,希望可以幫助到你
    2013-04-04
  • JavaScript實(shí)用技巧(一)

    JavaScript實(shí)用技巧(一)

    本文從7個(gè)方面講述 JavaScript 中那些你不很熟知但非常實(shí)用的技巧。
    2010-08-08
  • 淺談Webpack 是如何加載模塊的

    淺談Webpack 是如何加載模塊的

    這篇文章主要介紹了Webpack 是如何加載模塊的,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • JS 實(shí)現(xiàn)10進(jìn)制轉(zhuǎn)換36進(jìn)制的示例代碼

    JS 實(shí)現(xiàn)10進(jìn)制轉(zhuǎn)換36進(jìn)制的示例代碼

    這篇文章主要介紹了JS實(shí)現(xiàn)10進(jìn)制轉(zhuǎn)換36進(jìn)制,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • javascript中l(wèi)ocalStorage本地存儲(chǔ)(新增、刪除、修改)使用詳細(xì)教程

    javascript中l(wèi)ocalStorage本地存儲(chǔ)(新增、刪除、修改)使用詳細(xì)教程

    本地存儲(chǔ)localstorage是一種在瀏覽器中存儲(chǔ)數(shù)據(jù)的方式,可以將數(shù)據(jù)保存在用戶的本地計(jì)算機(jī)上,以便在下一次訪問網(wǎng)站時(shí)使用,下面這篇文章主要給大家介紹了關(guān)于javascript中l(wèi)ocalStorage本地存儲(chǔ)(新增、刪除、修改)使用詳細(xì)教程,需要的朋友可以參考下
    2023-05-05
  • 淺析JavaScript中的特殊數(shù)據(jù)類型

    淺析JavaScript中的特殊數(shù)據(jù)類型

    在JavaScript中,有6大數(shù)據(jù)類型,分別包括string,number,boolean,undefined,null 和 object。下面通過通過本文給大家介紹JavaScript中的特殊數(shù)據(jù)類型,需要的朋友參考下吧
    2017-12-12

最新評(píng)論

桓仁| 丘北县| 涿鹿县| 睢宁县| 克什克腾旗| 桑植县| 苏尼特右旗| 太康县| 麦盖提县| 婺源县| 红河县| 拉萨市| 乐都县| 大同市| 讷河市| 泗洪县| 霞浦县| 余干县| 武清区| 宁武县| 漳州市| 三明市| 葫芦岛市| 天祝| 尼勒克县| 太原市| 台湾省| 玛沁县| 福建省| 临漳县| 巴林右旗| 鄂托克旗| 来凤县| 金山区| 兴海县| 本溪市| 普兰县| 成武县| 休宁县| 简阳市| 宁德市|