---
name: "toFixedString"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "数值"
summary: "介绍高低位转换、位操作、范围映射、浮点精度处理及进制转换等数值计算工具。"
questions:
  - "highLowToInt函数如何将高8位和低8位合并为一个整数？highLowToInt(11,22)的结果是什么？"
  - "getBitValue和changeBitValue函数如何操作指定位置的位值？"
  - "calcPosition函数如何将原范围的值映射到新范围？如将0-100映射到-100-0"
  - "bytesToHexString函数如何将八位整数数组转换为十六进制字符串？"
  - "add和subtract函数如何解决JavaScript浮点数精度问题？"
  - "scaleNumber函数的num参数代表10的几次幂？scaleNumber(2,10245)结果是什么？"
  - "toFixedString和toFilledString函数在字符串超长时的行为有什么区别？"
  - "setBitValueWithOne和setBitValueWithZero函数分别在什么场景下使用？"
  - "range函数如何生成指定步长的数组？range(1,10,2)的结果是什么？"
  - "calcPercent函数的offset参数有什么作用？如何控制百分比起始偏移量？"
---

## toFixedString

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

将数字转换为指定长度的字符串，不足时前补零，超出时从右侧截取

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `num` | `number` | 是 | 需要转换的数字 |
| `count` | `number` | 是 | 目标字符串的固定长度 |

### 返回值

无


### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { toFixedString } = utils;

toFixedString(111, 5);  // '00111'
toFixedString(-42, 4);  // '-0042'
toFixedString(123456, 3); // '456'
```


---
name: "toFilledString"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "数值"
summary: "介绍高低位转换、位操作、范围映射、浮点精度处理及进制转换等数值计算工具。"
questions:
  - "highLowToInt函数如何将高8位和低8位合并为一个整数？highLowToInt(11,22)的结果是什么？"
  - "getBitValue和changeBitValue函数如何操作指定位置的位值？"
  - "calcPosition函数如何将原范围的值映射到新范围？如将0-100映射到-100-0"
  - "bytesToHexString函数如何将八位整数数组转换为十六进制字符串？"
  - "add和subtract函数如何解决JavaScript浮点数精度问题？"
  - "scaleNumber函数的num参数代表10的几次幂？scaleNumber(2,10245)结果是什么？"
  - "toFixedString和toFilledString函数在字符串超长时的行为有什么区别？"
  - "setBitValueWithOne和setBitValueWithZero函数分别在什么场景下使用？"
  - "range函数如何生成指定步长的数组？range(1,10,2)的结果是什么？"
  - "calcPercent函数的offset参数有什么作用？如何控制百分比起始偏移量？"
---
## toFilledString

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

将数字转换为指定最小长度的字符串，不足时前补零，超出时保持原样

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `num` | `number` | 是 | 需要转换的数字 |
| `count` | `number` | 是 | 目标字符串的最小长度 |

### 返回值

无


### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { toFilledString } = utils;

toFilledString(111, 5);      // '00111'
toFilledString(-1111111, 5); // '-1111111'
toFilledString(42, 4);       // '0042'
```


---
name: "bytesToHexString"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "数值"
summary: "介绍高低位转换、位操作、范围映射、浮点精度处理及进制转换等数值计算工具。"
questions:
  - "highLowToInt函数如何将高8位和低8位合并为一个整数？highLowToInt(11,22)的结果是什么？"
  - "getBitValue和changeBitValue函数如何操作指定位置的位值？"
  - "calcPosition函数如何将原范围的值映射到新范围？如将0-100映射到-100-0"
  - "bytesToHexString函数如何将八位整数数组转换为十六进制字符串？"
  - "add和subtract函数如何解决JavaScript浮点数精度问题？"
  - "scaleNumber函数的num参数代表10的几次幂？scaleNumber(2,10245)结果是什么？"
  - "toFixedString和toFilledString函数在字符串超长时的行为有什么区别？"
  - "setBitValueWithOne和setBitValueWithZero函数分别在什么场景下使用？"
  - "range函数如何生成指定步长的数组？range(1,10,2)的结果是什么？"
  - "calcPercent函数的offset参数有什么作用？如何控制百分比起始偏移量？"
---
## bytesToHexString

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

将字节数组转换为十六进制字符串

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `bytes` | `number[]` | 是 | 字节数组，每个元素为 0-255 的整数 |

### 返回值

无


### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { bytesToHexString } = utils;

bytesToHexString([1, 2]);   // '0102'
bytesToHexString([23, 2]);  // '1702'
bytesToHexString([255, 0]); // 'ff00'
```


---
name: "numToByteNumbers"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "数值"
summary: "介绍高低位转换、位操作、范围映射、浮点精度处理及进制转换等数值计算工具。"
questions:
  - "highLowToInt函数如何将高8位和低8位合并为一个整数？highLowToInt(11,22)的结果是什么？"
  - "getBitValue和changeBitValue函数如何操作指定位置的位值？"
  - "calcPosition函数如何将原范围的值映射到新范围？如将0-100映射到-100-0"
  - "bytesToHexString函数如何将八位整数数组转换为十六进制字符串？"
  - "add和subtract函数如何解决JavaScript浮点数精度问题？"
  - "scaleNumber函数的num参数代表10的几次幂？scaleNumber(2,10245)结果是什么？"
  - "toFixedString和toFilledString函数在字符串超长时的行为有什么区别？"
  - "setBitValueWithOne和setBitValueWithZero函数分别在什么场景下使用？"
  - "range函数如何生成指定步长的数组？range(1,10,2)的结果是什么？"
  - "calcPercent函数的offset参数有什么作用？如何控制百分比起始偏移量？"
---
## numToByteNumbers

> [VERSION] @ray-js/panel-sdk >= 1.0.0

> 💡 适用于非负整数。返回结果采用大端序，例如 256 会转换为 [1, 0]。

### 描述

将十进制整数转换为大端字节数组

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `num` | `number` | 是 | 需要转换的十进制整数 |
| `bytes` | `number` | 否 | 最小字节数，默认为 2；当结果不足该长度时会在高位补 0 |

### 返回值

类型: `number[]`

对应的字节数组，高位在前；若数值超过 bytes 指定的宽度，不会截断

### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { numToByteNumbers } = utils;

numToByteNumbers(111);      // [0, 111]
numToByteNumbers(1040001);  // [15, 222, 129]
numToByteNumbers(256, 2);   // [1, 0]
```


---
name: "intToHighLow"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "数值"
summary: "介绍高低位转换、位操作、范围映射、浮点精度处理及进制转换等数值计算工具。"
questions:
  - "highLowToInt函数如何将高8位和低8位合并为一个整数？highLowToInt(11,22)的结果是什么？"
  - "getBitValue和changeBitValue函数如何操作指定位置的位值？"
  - "calcPosition函数如何将原范围的值映射到新范围？如将0-100映射到-100-0"
  - "bytesToHexString函数如何将八位整数数组转换为十六进制字符串？"
  - "add和subtract函数如何解决JavaScript浮点数精度问题？"
  - "scaleNumber函数的num参数代表10的几次幂？scaleNumber(2,10245)结果是什么？"
  - "toFixedString和toFilledString函数在字符串超长时的行为有什么区别？"
  - "setBitValueWithOne和setBitValueWithZero函数分别在什么场景下使用？"
  - "range函数如何生成指定步长的数组？range(1,10,2)的结果是什么？"
  - "calcPercent函数的offset参数有什么作用？如何控制百分比起始偏移量？"
---
## intToHighLow

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

将整数拆分为高低字节数组

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `num` | `number` | 是 | 需要拆分的整数 |

### 返回值

类型: `[number, number]`

包含 [高 8 位, 低 8 位] 的元组

### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { intToHighLow } = utils;

intToHighLow(2838); // [11, 22]
intToHighLow(5643); // [22, 11]
intToHighLow(256);  // [1, 0]
```


---
name: "inMaxMin"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "数值"
summary: "介绍高低位转换、位操作、范围映射、浮点精度处理及进制转换等数值计算工具。"
questions:
  - "highLowToInt函数如何将高8位和低8位合并为一个整数？highLowToInt(11,22)的结果是什么？"
  - "getBitValue和changeBitValue函数如何操作指定位置的位值？"
  - "calcPosition函数如何将原范围的值映射到新范围？如将0-100映射到-100-0"
  - "bytesToHexString函数如何将八位整数数组转换为十六进制字符串？"
  - "add和subtract函数如何解决JavaScript浮点数精度问题？"
  - "scaleNumber函数的num参数代表10的几次幂？scaleNumber(2,10245)结果是什么？"
  - "toFixedString和toFilledString函数在字符串超长时的行为有什么区别？"
  - "setBitValueWithOne和setBitValueWithZero函数分别在什么场景下使用？"
  - "range函数如何生成指定步长的数组？range(1,10,2)的结果是什么？"
  - "calcPercent函数的offset参数有什么作用？如何控制百分比起始偏移量？"
---
## inMaxMin

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

将数值限制在最小值和最大值之间

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `min` | `number` | 是 | 允许的最小值 |
| `max` | `number` | 是 | 允许的最大值 |
| `value` | `number` | 是 | 需要限制的值 |

### 返回值

无


### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { inMaxMin } = utils;

inMaxMin(1, 233, 2838); // 233（超过最大值，返回最大值）
inMaxMin(2, 0, 1);      // 1（在范围外但参数顺序注意 min < max）
inMaxMin(0, 100, 50);   // 50（在范围内，原样返回）
```


---
name: "scaleNumber"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "数值"
summary: "介绍高低位转换、位操作、范围映射、浮点精度处理及进制转换等数值计算工具。"
questions:
  - "highLowToInt函数如何将高8位和低8位合并为一个整数？highLowToInt(11,22)的结果是什么？"
  - "getBitValue和changeBitValue函数如何操作指定位置的位值？"
  - "calcPosition函数如何将原范围的值映射到新范围？如将0-100映射到-100-0"
  - "bytesToHexString函数如何将八位整数数组转换为十六进制字符串？"
  - "add和subtract函数如何解决JavaScript浮点数精度问题？"
  - "scaleNumber函数的num参数代表10的几次幂？scaleNumber(2,10245)结果是什么？"
  - "toFixedString和toFilledString函数在字符串超长时的行为有什么区别？"
  - "setBitValueWithOne和setBitValueWithZero函数分别在什么场景下使用？"
  - "range函数如何生成指定步长的数组？range(1,10,2)的结果是什么？"
  - "calcPercent函数的offset参数有什么作用？如何控制百分比起始偏移量？"
---
## scaleNumber

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

按指定精度缩放数字并返回字符串

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `scale` | `number` | 是 | 缩放精度，表示除以 10^scale 并保留 scale 位小数 |
| `value` | `number` | 是 | 需要缩放的数值 |

### 返回值

无


### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { scaleNumber } = utils;

scaleNumber(2, 10245); // '102.45'
scaleNumber(1, 1024);  // '102.4'
scaleNumber(0, 42);    // '42'
```


---
name: "range"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "数值"
summary: "介绍高低位转换、位操作、范围映射、浮点精度处理及进制转换等数值计算工具。"
questions:
  - "highLowToInt函数如何将高8位和低8位合并为一个整数？highLowToInt(11,22)的结果是什么？"
  - "getBitValue和changeBitValue函数如何操作指定位置的位值？"
  - "calcPosition函数如何将原范围的值映射到新范围？如将0-100映射到-100-0"
  - "bytesToHexString函数如何将八位整数数组转换为十六进制字符串？"
  - "add和subtract函数如何解决JavaScript浮点数精度问题？"
  - "scaleNumber函数的num参数代表10的几次幂？scaleNumber(2,10245)结果是什么？"
  - "toFixedString和toFilledString函数在字符串超长时的行为有什么区别？"
  - "setBitValueWithOne和setBitValueWithZero函数分别在什么场景下使用？"
  - "range函数如何生成指定步长的数组？range(1,10,2)的结果是什么？"
  - "calcPercent函数的offset参数有什么作用？如何控制百分比起始偏移量？"
---
## range

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

生成指定范围的数字数组

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `start` | `number` | 是 | 起始值 |
| `end` | `number` | 是 | 结束值 |
| `step` | `number` | 否 | 步进值，默认为 1 |

### 返回值

类型: `number[]`

从 start 到 end，步长为 step 的数组

### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { range } = utils;

range(0, 3);      // [0, 1, 2]
range(1, 10, 3);  // [1, 4, 7]
range(0, -3, -1); // [0, -1, -2]
```


---
name: "calcPosition"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "数值"
summary: "介绍高低位转换、位操作、范围映射、浮点精度处理及进制转换等数值计算工具。"
questions:
  - "highLowToInt函数如何将高8位和低8位合并为一个整数？highLowToInt(11,22)的结果是什么？"
  - "getBitValue和changeBitValue函数如何操作指定位置的位值？"
  - "calcPosition函数如何将原范围的值映射到新范围？如将0-100映射到-100-0"
  - "bytesToHexString函数如何将八位整数数组转换为十六进制字符串？"
  - "add和subtract函数如何解决JavaScript浮点数精度问题？"
  - "scaleNumber函数的num参数代表10的几次幂？scaleNumber(2,10245)结果是什么？"
  - "toFixedString和toFilledString函数在字符串超长时的行为有什么区别？"
  - "setBitValueWithOne和setBitValueWithZero函数分别在什么场景下使用？"
  - "range函数如何生成指定步长的数组？range(1,10,2)的结果是什么？"
  - "calcPercent函数的offset参数有什么作用？如何控制百分比起始偏移量？"
---
## calcPosition

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

将数值从一个范围线性映射到另一个范围

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `value` | `number` | 是 | 原始值 |
| `min` | `number` | 是 | 原始范围的最小值 |
| `max` | `number` | 是 | 原始范围的最大值 |
| `newMin` | `number` | 是 | 目标范围的最小值 |
| `newMax` | `number` | 是 | 目标范围的最大值 |

### 返回值

无


### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { calcPosition } = utils;

calcPosition(50, 0, 100, -100, 0);   // -50
calcPosition(255, 0, 255, 0, 100);   // 100
calcPosition(127.5, 0, 255, 0, 100); // 50
```


---
name: "calcPercent"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "数值"
summary: "介绍高低位转换、位操作、范围映射、浮点精度处理及进制转换等数值计算工具。"
questions:
  - "highLowToInt函数如何将高8位和低8位合并为一个整数？highLowToInt(11,22)的结果是什么？"
  - "getBitValue和changeBitValue函数如何操作指定位置的位值？"
  - "calcPosition函数如何将原范围的值映射到新范围？如将0-100映射到-100-0"
  - "bytesToHexString函数如何将八位整数数组转换为十六进制字符串？"
  - "add和subtract函数如何解决JavaScript浮点数精度问题？"
  - "scaleNumber函数的num参数代表10的几次幂？scaleNumber(2,10245)结果是什么？"
  - "toFixedString和toFilledString函数在字符串超长时的行为有什么区别？"
  - "setBitValueWithOne和setBitValueWithZero函数分别在什么场景下使用？"
  - "range函数如何生成指定步长的数组？range(1,10,2)的结果是什么？"
  - "calcPercent函数的offset参数有什么作用？如何控制百分比起始偏移量？"
---
## calcPercent

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

计算数值在指定范围内的百分比

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `min` | `number` | 是 | 范围最小值 |
| `max` | `number` | 是 | 范围最大值 |
| `value` | `number` | 是 | 需要计算百分比的值，会被限制在 [min, max] 内 |
| `offset` | `number` | 否 | 百分比起始偏移量（0-1），默认为 0 |

### 返回值

无


### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { calcPercent } = utils;

calcPercent(0, 100, 50);       // 0.5
calcPercent(25, 255, 25);      // 0
calcPercent(25, 255, 25, 0.1); // 0.1（带偏移量）
```


---
name: "getBitValue"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "数值"
summary: "介绍高低位转换、位操作、范围映射、浮点精度处理及进制转换等数值计算工具。"
questions:
  - "highLowToInt函数如何将高8位和低8位合并为一个整数？highLowToInt(11,22)的结果是什么？"
  - "getBitValue和changeBitValue函数如何操作指定位置的位值？"
  - "calcPosition函数如何将原范围的值映射到新范围？如将0-100映射到-100-0"
  - "bytesToHexString函数如何将八位整数数组转换为十六进制字符串？"
  - "add和subtract函数如何解决JavaScript浮点数精度问题？"
  - "scaleNumber函数的num参数代表10的几次幂？scaleNumber(2,10245)结果是什么？"
  - "toFixedString和toFilledString函数在字符串超长时的行为有什么区别？"
  - "setBitValueWithOne和setBitValueWithZero函数分别在什么场景下使用？"
  - "range函数如何生成指定步长的数组？range(1,10,2)的结果是什么？"
  - "calcPercent函数的offset参数有什么作用？如何控制百分比起始偏移量？"
---
## getBitValue

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

获取数字在二进制表示中指定位置的位值

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `num` | `number` | 是 | 源数字 |
| `idx` | `number` | 是 | 位索引（从低位开始，0 为最低位） |

### 返回值

无


### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { getBitValue } = utils;

// 17 = 10001(2)
getBitValue(17, 0); // 1
getBitValue(17, 1); // 0
getBitValue(17, 4); // 1
```


---
name: "changeBitValue"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "数值"
summary: "介绍高低位转换、位操作、范围映射、浮点精度处理及进制转换等数值计算工具。"
questions:
  - "highLowToInt函数如何将高8位和低8位合并为一个整数？highLowToInt(11,22)的结果是什么？"
  - "getBitValue和changeBitValue函数如何操作指定位置的位值？"
  - "calcPosition函数如何将原范围的值映射到新范围？如将0-100映射到-100-0"
  - "bytesToHexString函数如何将八位整数数组转换为十六进制字符串？"
  - "add和subtract函数如何解决JavaScript浮点数精度问题？"
  - "scaleNumber函数的num参数代表10的几次幂？scaleNumber(2,10245)结果是什么？"
  - "toFixedString和toFilledString函数在字符串超长时的行为有什么区别？"
  - "setBitValueWithOne和setBitValueWithZero函数分别在什么场景下使用？"
  - "range函数如何生成指定步长的数组？range(1,10,2)的结果是什么？"
  - "calcPercent函数的offset参数有什么作用？如何控制百分比起始偏移量？"
---
## changeBitValue

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

翻转数字在二进制表示中指定位置的位值（0 变 1，1 变 0）

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `num` | `number` | 是 | 源数字 |
| `idx` | `number` | 是 | 位索引（从低位开始，0 为最低位） |

### 返回值

无


### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { changeBitValue } = utils;

// 17 = 10001(2)
changeBitValue(17, 0); // 16 (10000)
changeBitValue(17, 1); // 19 (10011)
changeBitValue(17, 4); // 1  (00001)
```


---
name: "setBitValueWithOne"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "数值"
summary: "介绍高低位转换、位操作、范围映射、浮点精度处理及进制转换等数值计算工具。"
questions:
  - "highLowToInt函数如何将高8位和低8位合并为一个整数？highLowToInt(11,22)的结果是什么？"
  - "getBitValue和changeBitValue函数如何操作指定位置的位值？"
  - "calcPosition函数如何将原范围的值映射到新范围？如将0-100映射到-100-0"
  - "bytesToHexString函数如何将八位整数数组转换为十六进制字符串？"
  - "add和subtract函数如何解决JavaScript浮点数精度问题？"
  - "scaleNumber函数的num参数代表10的几次幂？scaleNumber(2,10245)结果是什么？"
  - "toFixedString和toFilledString函数在字符串超长时的行为有什么区别？"
  - "setBitValueWithOne和setBitValueWithZero函数分别在什么场景下使用？"
  - "range函数如何生成指定步长的数组？range(1,10,2)的结果是什么？"
  - "calcPercent函数的offset参数有什么作用？如何控制百分比起始偏移量？"
---
## setBitValueWithOne

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

将数字在二进制表示中指定位置的位值设为 1

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `num` | `number` | 是 | 源数字 |
| `idx` | `number` | 是 | 位索引（从低位开始，0 为最低位） |

### 返回值

无


### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { setBitValueWithOne } = utils;

// 17 = 10001(2)
setBitValueWithOne(17, 0); // 17 (10001)，原本就是 1
setBitValueWithOne(17, 1); // 19 (10011)
setBitValueWithOne(17, 5); // 49 (110001)
```


---
name: "setBitValueWithZero"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "数值"
summary: "介绍高低位转换、位操作、范围映射、浮点精度处理及进制转换等数值计算工具。"
questions:
  - "highLowToInt函数如何将高8位和低8位合并为一个整数？highLowToInt(11,22)的结果是什么？"
  - "getBitValue和changeBitValue函数如何操作指定位置的位值？"
  - "calcPosition函数如何将原范围的值映射到新范围？如将0-100映射到-100-0"
  - "bytesToHexString函数如何将八位整数数组转换为十六进制字符串？"
  - "add和subtract函数如何解决JavaScript浮点数精度问题？"
  - "scaleNumber函数的num参数代表10的几次幂？scaleNumber(2,10245)结果是什么？"
  - "toFixedString和toFilledString函数在字符串超长时的行为有什么区别？"
  - "setBitValueWithOne和setBitValueWithZero函数分别在什么场景下使用？"
  - "range函数如何生成指定步长的数组？range(1,10,2)的结果是什么？"
  - "calcPercent函数的offset参数有什么作用？如何控制百分比起始偏移量？"
---
## setBitValueWithZero

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

将数字在二进制表示中指定位置的位值设为 0

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `num` | `number` | 是 | 源数字 |
| `idx` | `number` | 是 | 位索引（从低位开始，0 为最低位） |

### 返回值

无


### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { setBitValueWithZero } = utils;

// 17 = 10001(2)
setBitValueWithZero(17, 0); // 16 (10000)
setBitValueWithZero(17, 1); // 17 (10001)，原本就是 0
setBitValueWithZero(17, 4); // 1  (00001)
```


---
name: "numToHexString"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "数值"
summary: "介绍高低位转换、位操作、范围映射、浮点精度处理及进制转换等数值计算工具。"
questions:
  - "highLowToInt函数如何将高8位和低8位合并为一个整数？highLowToInt(11,22)的结果是什么？"
  - "getBitValue和changeBitValue函数如何操作指定位置的位值？"
  - "calcPosition函数如何将原范围的值映射到新范围？如将0-100映射到-100-0"
  - "bytesToHexString函数如何将八位整数数组转换为十六进制字符串？"
  - "add和subtract函数如何解决JavaScript浮点数精度问题？"
  - "scaleNumber函数的num参数代表10的几次幂？scaleNumber(2,10245)结果是什么？"
  - "toFixedString和toFilledString函数在字符串超长时的行为有什么区别？"
  - "setBitValueWithOne和setBitValueWithZero函数分别在什么场景下使用？"
  - "range函数如何生成指定步长的数组？range(1,10,2)的结果是什么？"
  - "calcPercent函数的offset参数有什么作用？如何控制百分比起始偏移量？"
---
## numToHexString

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

将十进制数字转换为指定长度的十六进制字符串

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `num` | `number` | 是 | 需要转换的十进制数字 |
| `padding` | `number` | 否 | 十六进制字符串的最小长度，默认为 2，不足前补零 |

### 返回值

无


### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { numToHexString } = utils;

numToHexString(111);    // '6f'
numToHexString(15);     // '0f'
numToHexString(255, 4); // '00ff'
```


---
name: "highLowToInt"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "数值"
summary: "介绍高低位转换、位操作、范围映射、浮点精度处理及进制转换等数值计算工具。"
questions:
  - "highLowToInt函数如何将高8位和低8位合并为一个整数？highLowToInt(11,22)的结果是什么？"
  - "getBitValue和changeBitValue函数如何操作指定位置的位值？"
  - "calcPosition函数如何将原范围的值映射到新范围？如将0-100映射到-100-0"
  - "bytesToHexString函数如何将八位整数数组转换为十六进制字符串？"
  - "add和subtract函数如何解决JavaScript浮点数精度问题？"
  - "scaleNumber函数的num参数代表10的几次幂？scaleNumber(2,10245)结果是什么？"
  - "toFixedString和toFilledString函数在字符串超长时的行为有什么区别？"
  - "setBitValueWithOne和setBitValueWithZero函数分别在什么场景下使用？"
  - "range函数如何生成指定步长的数组？range(1,10,2)的结果是什么？"
  - "calcPercent函数的offset参数有什么作用？如何控制百分比起始偏移量？"
---
## highLowToInt

> [VERSION] @ray-js/panel-sdk >= 1.0.0

### 描述

将高低字节合并为一个整数

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `high` | `number` | 是 | 高 8 位字节值 |
| `low` | `number` | 是 | 低 8 位字节值 |

### 返回值

无


### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { highLowToInt } = utils;

highLowToInt(11, 22); // 2838
highLowToInt(22, 11); // 5643
highLowToInt(1, 0);   // 256
```


---
name: "add"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "数值"
summary: "介绍高低位转换、位操作、范围映射、浮点精度处理及进制转换等数值计算工具。"
questions:
  - "highLowToInt函数如何将高8位和低8位合并为一个整数？highLowToInt(11,22)的结果是什么？"
  - "getBitValue和changeBitValue函数如何操作指定位置的位值？"
  - "calcPosition函数如何将原范围的值映射到新范围？如将0-100映射到-100-0"
  - "bytesToHexString函数如何将八位整数数组转换为十六进制字符串？"
  - "add和subtract函数如何解决JavaScript浮点数精度问题？"
  - "scaleNumber函数的num参数代表10的几次幂？scaleNumber(2,10245)结果是什么？"
  - "toFixedString和toFilledString函数在字符串超长时的行为有什么区别？"
  - "setBitValueWithOne和setBitValueWithZero函数分别在什么场景下使用？"
  - "range函数如何生成指定步长的数组？range(1,10,2)的结果是什么？"
  - "calcPercent函数的offset参数有什么作用？如何控制百分比起始偏移量？"
---
## add

> [VERSION] @ray-js/panel-sdk >= 1.0.0

> 💡 通过先乘以 10 的 n 次方转为整数运算，再除回来，避免 JavaScript 浮点数精度丢失。

### 描述

精确计算两数相加，避免浮点数精度问题

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `number1` | `number` | 是 | 第一个加数 |
| `number2` | `number` | 是 | 第二个加数 |

### 返回值

无


### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { add } = utils;

add(0.1, 0.2);   // 0.3（而非 0.30000000000000004）
add(1.005, 0.01); // 1.015
```


---
name: "subtract"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
title: "数值"
summary: "介绍高低位转换、位操作、范围映射、浮点精度处理及进制转换等数值计算工具。"
questions:
  - "highLowToInt函数如何将高8位和低8位合并为一个整数？highLowToInt(11,22)的结果是什么？"
  - "getBitValue和changeBitValue函数如何操作指定位置的位值？"
  - "calcPosition函数如何将原范围的值映射到新范围？如将0-100映射到-100-0"
  - "bytesToHexString函数如何将八位整数数组转换为十六进制字符串？"
  - "add和subtract函数如何解决JavaScript浮点数精度问题？"
  - "scaleNumber函数的num参数代表10的几次幂？scaleNumber(2,10245)结果是什么？"
  - "toFixedString和toFilledString函数在字符串超长时的行为有什么区别？"
  - "setBitValueWithOne和setBitValueWithZero函数分别在什么场景下使用？"
  - "range函数如何生成指定步长的数组？range(1,10,2)的结果是什么？"
  - "calcPercent函数的offset参数有什么作用？如何控制百分比起始偏移量？"
---
## subtract

> [VERSION] @ray-js/panel-sdk >= 1.0.0

> 💡 通过先乘以 10 的 n 次方转为整数运算，再除回来，避免 JavaScript 浮点数精度丢失。

### 描述

精确计算两数相减，避免浮点数精度问题

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `number1` | `number` | 是 | 被减数 |
| `number2` | `number` | 是 | 减数 |

### 返回值

无


### 示例代码

#### 基础用法

```ts
import { utils } from '@ray-js/panel-sdk';

const { subtract } = utils;

subtract(0.3, 0.1);   // 0.2（而非 0.19999999999999998）
subtract(1.005, 0.01); // 0.995
```
