banner
banner
banner
NEWS LETTER

微信小程序-生成二维码scene问题

Scroll down

问题:scene 太长(参数少但长),生成不了小程序码

原因:

  • 使用getUnlimitedQRCode获取无限制的小程序码时,可接受页面参数scene的长度不能超过32位字符

使用 JSBI 插件

  • 安装:npm install jsbi –save
  • 用法:JSBI.BigInt()

解决方案

  • 1.先把scene的每个参数用JSBI.BigInt()包裹住,防止在转格式的时候丢失精度
  • 2.然后调用.toString(36)转为36进制
    • 因为scene为32位的十进制,所以先转为36进制的.如果不满足可以考虑其他进制
  • 3.然后使用encodeURIComponent(),生成二维码
  • 4.按照分隔符解码和解构赋值得到参数:
    • [a,b,c,d] = decodeURIComponent(params.scene).split(‘;’),
    • 此时拿到的参数是36进制的还要再转回十进制
  • 5.转为十进制即可

相关文档

BigInt

了解BigInt

  • JS 中的 NUmber 类型只能安全地表示-(2^53-1)和(2^53-1)之间的整数
  • 任何超过这个范围的整数值都会丢失精度(四舍五入)
  • 而使用BigInt就不会丢失精度,可以运算大整数

定义一个BigInt

  • 在一个整数后面加n,例如: 10n
  • 调用函数BigInt()并传递一个整数值或字符串值,例如: BigInt(10)

BigInt特点

  • 不能用于 Math 对象中的方法
  • 不能与任何 Number 实例混合运算,两者必须转换成同一种类型。但是需要注意,BigInt 在转换成 Number 时可能会丢失精度
  • 当使用 BigInt 时,带小数的运算会被向下取整
  • BigInt 和 Number 不是严格相等,但是宽松相等
  • 示例:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    0n === 0 // false
    0n == 0 // true

    2n > 2 // false
    2n > 1 // true

    const mixed = [4n, 6, -12n, 10, 4, 0, 0n];
    mixed.sort(); // [-12n, 0, 0n, 10, 4n, 4, 6]

    //被 Object 包装的 BigInt 使用 object 的比较规则进行比较,只用同一个对象比较时才相等
    0n === Object(0n); // false
    Object(0n) === Object(0n); // false
    const o = Object(0n);
    o === o // true

BigInt的方法

  • Bigint.asIntN()
    • 将 BigInt 值转换为一个 -2^(width-1) 与 2^(width-1) - 1 之间的有符号整数。
  • BigInt.asUintN()
    • 将一个 BigInt 值转换为 0 与 2^(width) - 1 之间的无符号整数。
  • BigInt.prototype.toLocaleString()
    • 返回此数字的 language-sensitive 形式的字符串。覆盖 Object.prototype.toLocaleString() 方法。
  • BigInt.prototype.toString()
    • 返回以指定基数 (base) 表示指定数字的字符串。覆盖 Object.prototype.toString() 方法。
  • BigInt.prototype.valueOf()
    • 返回指定对象的基元值。覆盖 Object.prototype.valueOf() 方法。
其他文章
cover
微信小程序-动态tabbar(底部菜单)
  • 24/11/04
  • 09:57
  • 微信小程序
cover
微信小程序-H5相关问题
  • 24/11/04
  • 09:57
  • 微信小程序
目录导航 置顶
  1. 1. 问题:scene 太长(参数少但长),生成不了小程序码
    1. 1.1. 原因:
    2. 1.2. 使用 JSBI 插件
    3. 1.3. 解决方案
    4. 1.4. 相关文档
  2. 2. BigInt
    1. 2.1. 了解BigInt
    2. 2.2. 定义一个BigInt
    3. 2.3. BigInt特点
    4. 2.4. BigInt的方法
请输入关键词进行搜索