js 进制转换/进制编码解码

更新日期: 2019-10-30阅读: 2.3k标签: 进制

js 进制转换

js 进制转换支持 2-36 , 即 0-9a-z .
可以用于混淆、数值缩短、特殊符号转换…

// 取值 2-36
(1234).toString(36) // 把 10 进制数转为 36 进制
parseInt('ya', 36) // 把转 36 进制 ya 为 10 进制

以下是一些应用.


字符串36进制编码解码

function enStr(strLong = '你好'){
    const num2 = 36;
    let aryLong = '';
    let result = '';

    for (const item of strLong) {
      if (aryLong.length > 0) aryLong += '|';
      aryLong += item.charCodeAt().toString(num2);
    }
    return aryLong
}
function deStr(aryLong = 'fog|hod') {
  const num2 = 36
  let result = ''
    for (const item of aryLong.split('|')) {
      result += String.fromCharCode(parseInt(item, num2));
    }
  return result
}
console.log('enStr()', enStr('测试'))
console.log('deStr()', deStr(enStr('测试')))


ip地址端口号36进制编码解码

function enServer(ip = '192.168.6.20:8080') { // 返回 ip:prot 的 36进制+位置 例: 192.168.6.20:8080 => oit6cnyo3312
  const arr = [...ip.matchAll(/\.|:/g)].map(item => item. index)
  const addr = arr.map((item, index, arr) => index === 0 ? item : arr[index] - arr[index-1] - 1).join('')
  const ip36 = (Number(ip.replace(/\.|:/g, ''))).toString(36) // 转 ip 端口为 36 进制并位置
  const res = ip36+addr
  return res
}
function deServer(str = 'oit6cnyo3312') { // 转 36进制+位置为 ip:prot 例: oit6cnyo3312 => 192.168.6.20:8080
  const [, ip36, addr] = str.match(/(.*)(.{4})/)
  const ip = String(parseInt(ip36, 36))
  const re = new RegExp(addr.replace(/(\d)(\d)(\d)(\d)/, '(\\d{$1})(\\d{$2})(\\d{$3})(\\d{$4})(\\d+)'))
  const res = ip.replace(re, '$1.$2.$3.$4:$5')
  return res
}

console.log('enServer', enServer('127.0.0.1:8888'))
console.log('deServer', deServer(enServer('127.0.0.1:8888')))

链接: https://fly63.com/article/detial/6685

二进制和十进制相互转换、位移运算

自己的解题思路是将十进制的数转为二进制(不足32位补0),然后依次取8位转化为十进制的数字,再用.连接即为IP。里面的几个点记录一下:十进制转换为二进制 numObj.toString([radix]) radix可以指定进制

Js进制转换

参数radix支持 [2, 36] 之间的整数。例如:参数值为2,则表示二进制;为8,则表示八进制;为16,则表示十六进制。如果省略参数radix,则默认为10(十进制)。

理解二进制操作

最近在用 shell 写一个小工具,里面要用到复杂的二进制操作,对 int 值进行位操作和与或非,而 shell 的语法里, & 是取布尔与, >> 是重定向,不支持二进制操作,为了写出只需要默认系统环境就可以运行的程序

Js将十进制转换为十六进制?

JavaScript中有很多内置函数可以帮我们进行数(进)制转换。那么给定一个十进制数字,如何将数字从十进制转换为十六进制?下面本篇文章就来给大家介绍一个使用JavaScript将十进制转换为十六进制的方法

JavaScript 进制转换&位运算

在一般的代码中很少会接触到进制和位运算,但这不代表我们可以不去学习它。作为一位编程人员,这些都是基础知识。如果你没有学过这方面的知识,也不要慌,接下来的知识并不会很难。本文你将会学习到:进制转换,按位操作符,Javascript进制转换

nodejs怎么存取2进制数据?

在客户端javascript脚本代码中,对于二进制数据并没有提供一个很好的支持。然后在nodejs中需要处理像TCP流或文件流时,必须要处理二进制数据。因此在node.js中,定义了一个Buffer类,该类用来创建一个专门存放二进制数据的缓存区

十进制与十六进制之间的转换

将十进制数 x 除以 16, 即 x = q * 16 + r,取得余数 r 和 商 q,此时余数 r 就是 x 用十六进制表示时的最低位值; 之后商值 q 继续进行以上的除法操作, 获取每次的余数 r 作为 十六进制表示时的低位值, 直到 q 值小于 16 为值, 此时的

二进制数与位运算符

位运算符是基于二级制数进行操作的,即表示数字的 32 个数位,它由0和1组成…ECMAScript整数有两种类型,即有符号整数(允许用正数和负数)和无符号整数(只允许用正数)

JavaScript中的多种进制与进制转换

JavaScript 中提供的进制表示方法有四种:十进制、二进制、十六进制、八进制。对于数值字面量,主要使用不同的前缀来区分:

Js二进制家族:文件base64、File、Blob、ArrayBuffer互转

JavaScript 提供了一些 API 来处理文件或原始文件数据,例如:File、Blob、FileReader、ArrayBuffer、base64 等。Blob 全称为 binary large object ,即二进制大对象,它是 JavaScript 中的一个对象

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!