Как перевести массив байтов в Base64
- Вставьте массив в поле ввода. Можно целым объявлением: имена типов и переменных, скобки и точки с запятой пропускаются.
- Base64 появится в поле результата. Дополнение (=) и Перенос строк под результатом управляют форматом.
- Нажмите Скопировать результат или выберите в меню В другой формат, например Hex или Base64URL.
- Чтобы превратить Base64 обратно в объявление для нужного языка, используйте Base64 в массив байтов.
Что можно вставить
Каждая строка ниже даёт SGkh, то есть Base64 для трёх байтов H, i, !:
| Язык | Ввод |
|---|---|
| C, C++ | unsigned char d[] = {0x48, 0x69, 0x21}; |
| JavaScript | new Uint8Array([72, 105, 33]), Uint8Array.from([72, 105, 33]), Buffer.from([72, 105, 33]) |
| Python | b'Hi!', b'\x48\x69\x21', bytes([72, 105, 33]), bytearray(b'Hi!') |
| Java | new 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, двоичными с 0b, восьмеричными с 0o или символьными литералами ASCII вроде 'H'. Суффиксы типов вроде u8, U и L игнорируются. Литералы Python читаются по полным правилам экранирования, включая \n, \t и восьмеричные последовательности, а несколько кусков b'...' подряд, как в многострочном литерале в скобках, склеиваются.
Знаковые байты и диапазоны значений
В Java нет беззнакового байта, поэтому массивы, напечатанные из Java или Kotlin, содержат отрицательные числа. Конвертер читает значения от −128 до −1 как байты от 0x80 до 0xff:
| Ввод | Байты | Base64 |
|---|---|---|
{72, 105, -1} | 48 69 ff | SGn/ |
new byte[]{72, 105, (byte) 0xff, -1} | 48 69 ff ff | SGn//w== |
[-34, -83, -66, -17] | de ad be ef | 3q2+7w== |
Всё, что больше 255 или меньше −128, останавливает преобразование с указанием значения и его позиции. Числа с ведущим нулём вроде 072 читаются как десятичное 72, а не как восьмеричное 58 в стиле C: обычно именно это и имеют в виду, вставляя список значений байтов.
Что эта страница не читает
- Вывод консоли Node вида
<Buffer 48 69 21>. Это hex без0x, а конвертер прочитал бы значения как десятичные. Скопируйте часть между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'
Spread-оператор передаёт каждый байт отдельным аргументом, поэтому на больших массивах он падает: в Node 24 это Maximum call stack size exceeded где-то между 125 000 и 200 000 элементов, а в других движках предел свой. Для больших данных Buffer.from(arr).toString("base64") в Node или arr.toBase64() в современных браузерах лишены этой проблемы; см. Uint8Array.toBase64. Подробнее по языкам: Java, C#, Python, JavaScript.
Вопросы и ответы
Как перевести byte[] в Base64 в Java?
Вызовом java.util.Base64.getEncoder().encodeToString(bytes). Чтобы проверить зашитый в код массив, вставьте сюда объявление new byte[] { ... } целиком, вместе с приведениями типов и отрицательными значениями.
Можно вставить литерал bytes из Python?
Да. Работают b'Hi!', b'\x48\x69\x21', восьмеричные escape-последовательности вроде \041, bytes([72, 105, 33]) и несколько литералов, разбитых по строкам.
Почему появляется «не помещается в байт»?
Какое-то значение больше 255 или меньше −128. Часто массив на самом деле состоит из 16- или 32-битных целых, например short[] или int[], и его сначала нужно разбить на байты в выбранном порядке байтов.
Числа без 0x читаются как hex?
Нет. Голое 48 читается как десятичное 48. Для hex-значений нужен префикс 0x, или вставьте их в Hex в Base64: там hex читается и без префикса.