ryangriggs/baseconvert

支持任意数字字符集的进制转换实用函数。

dev-master 2020-04-17 00:12 UTC

This package is auto-updated.

Last update: 2024-09-17 10:39:04 UTC


README

PHP任意进制转换函数

baseconvert 是一个快速简单的PHP函数,可以将数字从任意进制转换为其他进制。它可以从十进制转换为任何其他进制,包括二进制、八进制、十六进制或任何您能想象的任意进制。它还可以在任意进制之间转换。想从二进制转换为八进制?从十六进制转换到包含23个字母数字字符的进制呢?是的,它能做到!

根据需要,它可以使用0位数字填充结果。

进制字符集可自定义,因此可以使用任何字符。

函数参数

baseconvert($value, $charset, $pad, $from_charset)

  • $value = 要转换的值(在任何进制中,必须与 $from_charset 中列出的字符匹配)
  • $charset = 要用于输出进制的数字列表。每个数字必须是唯一的,可以以无空格的字符串或数字数组的形式列出。一个进制必须至少包含2个字符。
  • $pad - 使用基字符集的0位数字将结果左填充到 $pad 位。将 $pad 设置为 false [默认] 跳过填充,或指定结果的长度。结果长度超过 $pad 位时将按原样返回。
  • $from_charset - 解析 $value 时使用的字符集。默认情况下,这是 "0123456789",即十进制。

示例

// 从十进制到其他进制

// 使用字符 0 和 1 将十进制值 "100" 转换为二进制。(二进制)

baseconvert(100, "01"); // 结果:1100100

// 使用字符 0 和 1(二进制)将十进制值 "100" 转换为8位填充

baseconvert(100, "01", 8); // 结果:01100100

// 将十进制值 "100" 转换为十六进制

baseconvert(100, "0123456789abcdef"); // 结果:64

// 从其他进制到十进制

// 将十六进制值 0xDEADBEEF 转换为十进制

baseconvert("DEADBEEF", "0123456789", false, "0123456789ABCDEF"); // 结果:3735928559

// 将二进制值 10010100101110 转换为十进制

baseconvert("10010100101110", "0123456789", false, "01"); // 结果 9518

// 在任意进制之间转换

// 将八进制 03773 转换为十六进制

baseconvert("03773", "0123456789abcdef", false, "01234567"); // 结果:7fb

// 将值 "GACT"(使用字符 "A", "C", "G", "T" 的四进制),转换为使用字符 "X", "Y" 和 "Z" 的三进制

baseconvert("GACT", "XYZ", false, "ACGT"); // 结果 YZXXX

// 将二进制 1011010110101011 转换为使用字符 !, @, #, $, %, ^, &, *, =, :, ?, + 的十二进制

baseconvert("1011010110101011", "!@#$%^&=:?+", false, "01"); // 结果:##?+

... 我想你已经明白了。