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

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

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

前言

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

HEX編碼簡介

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

場景示例

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

具體實現(xiàn)

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

用戶界面設計

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

格式驗證與轉換

ASCII格式驗證

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

HEX格式驗證與轉換

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

    pachars(str) {
      var reg = /^[2-7][0-9a-fA-F]$/; // 匹配 HEX 格式:首字符為 2-7,第二個字符為 0-9 或 a-f/A-F
      var arr = str.match(/.{1,2}/g); // 按每兩個字符分割字符串
    
      if (!arr) {
        return false;
      }
    
      // 遍歷所有 HEX 字符對
      for (let i = 0; i < arr.length; i++) {
        /**匹配ASCII碼的16進制數(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碼 則進行下一步轉Ascll碼校驗(注:當前Ascll轉HEX碼只是在web端進行一個轉換校驗 實際下發(fā)底層還是以Ascll下發(fā))

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

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

?然后再使用轉換后的Ascll碼進行密碼強度規(guī)范校驗 如果不滿足則提示報錯信息

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

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

總結 

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

相關文章

  • 談談JS中的!!

    談談JS中的!!

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

    淺談PDF.js使用心得

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

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

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

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

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

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

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

    JavaScript實用技巧(一)

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

    淺談Webpack 是如何加載模塊的

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

    JS 實現(xiàn)10進制轉換36進制的示例代碼

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

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

    本地存儲localstorage是一種在瀏覽器中存儲數(shù)據(jù)的方式,可以將數(shù)據(jù)保存在用戶的本地計算機上,以便在下一次訪問網站時使用,下面這篇文章主要給大家介紹了關于javascript中l(wèi)ocalStorage本地存儲(新增、刪除、修改)使用詳細教程,需要的朋友可以參考下
    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

最新評論

丹江口市| 仲巴县| 阳江市| 涞水县| 西吉县| 凤凰县| 同江市| 嘉祥县| 娄底市| 勐海县| 湘阴县| 泾阳县| 娄底市| 耒阳市| 永吉县| 灵石县| 潼南县| 吉安市| 西青区| 稻城县| 化德县| 电白县| 乃东县| 凤城市| 武强县| 宁明县| 阿坝| 云浮市| 历史| 奇台县| 胶州市| 万盛区| 柯坪县| 荥阳市| 当涂县| 三明市| 吴川市| 莆田市| 三穗县| 民和| 额尔古纳市|