上传文件
  1. base64hub
  2. 其他进制编码
  3. 字节数组转 Base64

字节数组转 Base64 转换器,支持各种语言

直接从源代码或调试器中粘贴字节数组,即可得到 Base64。解析器能读取 C、JavaScript、Python、Java、Go、C# 和 Rust 的字面量,也能读取 72, 105, 33 这样的纯数字列表。

免费 无需注册,不限次数 本地 不上传任何内容 −128..−1 正确读取 Java 有符号字节 更新于 2026年10月27日
输入 0字节 0 B输出 0

在你的浏览器中处理。此页面无法将你的数据发送到任何地方: 我们如何确认

如何将字节数组转换为 Base64

  1. 把数组粘贴到输入框。粘贴整个声明也没问题:类型名、变量名、括号和分号都会被跳过。
  2. Base64 显示在输出中。输出下方的 填充(=) 和 换行 控制格式。
  3. 点击 复制输出,或把 到 菜单切换为 Hex、Base64URL 等其他格式。
  4. 要把 Base64 还原为某种语言的数组声明,请使用 Base64 转字节数组。

可以粘贴什么

下面每一行得到的都是 SGkh,即 H、i、! 三个字节的 Base64:

语言输入
C、C++unsigned char d[] = {0x48, 0x69, 0x21};
JavaScriptnew Uint8Array([72, 105, 33])、Uint8Array.from([72, 105, 33])、Buffer.from([72, 105, 33])
Pythonb'Hi!'、b'\x48\x69\x21'、bytes([72, 105, 33])、bytearray(b'Hi!')
Javanew byte[]{72, 105, 33}、(byte) 0x48 强制转换
Go[]byte{0x48, 0x69, 0x21}
C#new byte[] { 0x48, 0x69, 0x21 }
Rust[0x48u8, 0x69, 0x21]、vec![72u8, 105, 33]
纯列表72, 105, 33 或 72 105 33

值可以是十进制、带 0x 的 hex、带 0b 的二进制、带 0o 的八进制,或者 'H' 这样的 ASCII 字符字面量。u8、U、L 之类的类型后缀会被忽略。Python 字面量按其完整的转义规则读取,包括 \n、\t 和八进制转义;连续的多个 b'...' 片段(例如括号中的多行字面量)会被拼接起来。

有符号字节与取值范围

Java 没有无符号字节,所以从 Java 或 Kotlin 打印出的数组会包含负数。转换器把 −128 到 −1 读作字节 0x80 到 0xff:

输入字节Base64
{72, 105, -1}48 69 ffSGn/
new byte[]{72, 105, (byte) 0xff, -1}48 69 ff ffSGn//w==
[-34, -83, -66, -17]de ad be ef3q2+7w==

任何大于 255 或小于 −128 的值都会让转换停止,并显示该值及其位置。带前导零的数字(例如 072)读作十进制的 72,而不是 C 语言八进制的 58,这符合大多数人粘贴字节值列表时的本意。

本页不读取的格式

  • Node 控制台输出的 <Buffer 48 69 21>。 这些值是不带 0x 的 hex,转换器会把它们当作十进制读取。请把 Buffer 和 > 之间的部分复制到 Hex 转 Base64。
  • 带引号的 C 字符串,例如 "Hi!"。文本请使用 文本转 Base64,或者把字节写成数组。
  • JSON 对象,例如 {"type":"Buffer","data":[72,105,33]}。只粘贴 [72,105,33] 部分,在这里或 十进制转 Base64 中都可以。

在代码中将字节数组转为 Base64

String b64 = java.util.Base64.getEncoder().encodeToString(new byte[] {72, 105, 33});   // "SGkh"
string b64 = Convert.ToBase64String(new byte[] { 0x48, 0x69, 0x21 });   // "SGkh"
import base64
base64.b64encode(bytes([72, 105, 33])).decode()   # 'SGkh'
btoa(String.fromCharCode(...new Uint8Array([72, 105, 33])));   // 'SGkh'

展开运算符会把每个字节作为单独的参数传入,所以遇到大数组会失败:在 Node 24 中,元素数在 125,000 到 200,000 之间的某处就会抛出 Maximum call stack size exceeded,而且不同引擎的上限不一样。对于大数据,在 Node 中用 Buffer.from(arr).toString("base64"),在新版浏览器中用 arr.toBase64(),就能避免这个问题;参见 Uint8Array.toBase64。各语言的更多内容:Java、C#、Python、JavaScript。

常见问题

在 Java 中怎么把 byte[] 转成 Base64?

java.util.Base64.getEncoder().encodeToString(bytes)。要检查写死在代码里的数组,把整个 new byte[] { ... } 声明粘贴到这里即可,强制类型转换和负数都没问题。

能粘贴 Python 的 bytes 字面量吗?

能。b'Hi!'、b'\x48\x69\x21'、\041 这样的八进制转义、bytes([72, 105, 33]),以及分成多行的多个字面量都可以。

为什么提示超出一个字节的范围?

有某个值大于 255 或小于 −128。这通常说明数组实际上是 16 位或 32 位整数,例如 short[] 或 int[],需要先按选定的字节序拆分成字节。

不带 0x 的数字会被当作 hex 读取吗?

不会。单独的 48 就是十进制的 48。hex 值需要 0x 前缀;或者改为粘贴到 Hex 转 Base64,它能读取不带前缀的 hex。