Загрузить файл
  1. base64hub
  2. Другие BaseN
  3. Base64 в массив байтов

Base64 в массив байтов для C, Java, Python, Go, C#

Вставьте Base64 и получите декодированные байты в виде литерала массива, который можно вставить в исходный код. Язык выбирается под результатом: C/C++, JavaScript, Python, Java, Go, C# или Rust.

Бесплатно без регистрации и ограничений Локально ничего не загружается 7 языков, от C до Rust Обновлено 27 окт. 2026 г.
Ввод 0Байты 0 BРезультат 0

Обработка идёт в браузере. Эта страница не может никуда отправить ваши данные – откуда мы это знаем

Как перевести Base64 в массив байтов

  1. Вставьте Base64 в поле ввода. Пробелы, отсутствующее дополнение, URL-safe символы и префикс data: допускаются.
  2. Выберите целевой язык под результатом в поле Язык: C / C++, JavaScript, Python, Java, Go, C# или Rust. При открытии страницы выбран JavaScript.
  3. Нажмите Скопировать результат и вставьте объявление в код. Переименуйте data, как вам удобно.
  4. Меню Из и В над инструментом меняют формат ввода или вывода, например чтобы читать hex вместо Base64.

Чтобы перевести массив обратно в Base64, используйте массив байтов в Base64: он читает все эти форматы.

Что получается для каждого языка

Base64 3q2+7wABAgOAf/8K декодируется в 12 байт: de ad be ef 00 01 02 03 80 7f ff 0a. Вот результат для каждого значения поля Язык:

const unsigned char data[12] = {
    0xde, 0xad, 0xbe, 0xef, 0x00, 0x01, 0x02, 0x03, 0x80, 0x7f, 0xff, 0x0a
};
const data = new Uint8Array([
    0xde, 0xad, 0xbe, 0xef, 0x00, 0x01, 0x02, 0x03, 0x80, 0x7f, 0xff, 0x0a
]);
data = b'\xde\xad\xbe\xef\x00\x01\x02\x03\x80\x7f\xff\x0a'
byte[] data = new byte[] {
    -34, -83, -66, -17, 0, 1, 2, 3, -128, 127, -1, 10
};
data := []byte{
	0xde, 0xad, 0xbe, 0xef, 0x00, 0x01, 0x02, 0x03, 0x80, 0x7f, 0xff, 0x0a,
}
byte[] data = new byte[] {
    0xde, 0xad, 0xbe, 0xef, 0x00, 0x01, 0x02, 0x03, 0x80, 0x7f, 0xff, 0x0a
};
let data: [u8; 12] = [
    0xde, 0xad, 0xbe, 0xef, 0x00, 0x01, 0x02, 0x03, 0x80, 0x7f, 0xff, 0x0a
];

Что полезно знать:

  • Массивы переносятся после 12 значений в строке. Python пишет по 16 байт в каждую строку b'...' и берёт длинные данные в круглые скобки: такие строки склеиваются на этапе компиляции.
  • Java получает знаковые десятичные числа, потому что (byte) 0xde потребовал бы приведения типа для каждого значения больше 0x7f. За -34 и 0xde стоят одни и те же биты.
  • C и Rust объявляют длину. Массив в C имеет тип unsigned char, так что значения больше 127 помещаются без предупреждений.
  • В Go после последнего значения стоит запятая. Компилятор требует её, когда закрывающая скобка стоит на отдельной строке.
  • Python записывает каждый байт как \x.., даже печатные, поэтому литерал однозначно читается и удобно сравнивается в diff.

Вшивать байты или оставить Base64?

Литерал массива байтов оправдан, когда в программе нет декодера Base64 или ей не стоит тратить время на декодирование: прошивки для микроконтроллеров, тестовые фикстуры, небольшой ключ или сертификат, вкомпилированный в бинарник, таблица подстановки. Платить приходится размером исходного файла. Каждый байт занимает около шести символов (0xde, ), это более чем вчетверо длиннее Base64, так что 10 KB данных превращаются примерно в 60 KB кода.

Если данные меняются или занимают больше нескольких килобайт, храните строку Base64 и декодируйте её при запуске:

import base64
data = base64.b64decode("3q2+7wABAgOAf/8K")
byte[] data = Convert.FromBase64String("3q2+7wABAgOAf/8K");
byte[] data = java.util.Base64.getDecoder().decode("3q2+7wABAgOAf/8K");
const data = Uint8Array.from(atob("3q2+7wABAgOAf/8K"), c => c.charCodeAt(0));

В новых браузерах есть ещё Uint8Array.fromBase64(), он описан в статье Uint8Array.fromBase64 и toBase64. Страницы по C#, Java, Go, Rust и Python подробнее показывают декодеры.

Частые проблемы

  • «Некорректный Base64». В строке есть символ вне алфавита, или она обрезана. В сообщении указана позиция, а валидатор Base64 объясняет, что не так со сломанной строкой.
  • Ошибки «narrowing conversion» в C++. char data[] = {0xde}; не компилируется в C++11 и новее: обычный char на большинстве платформ знаковый, и 222 в него не помещается. Оставьте сгенерированный unsigned char или используйте uint8_t.
  • Огромный результат. Для больших файлов xxd -i file.bin сразу печатает массив для C, а средства встраивания вроде #embed из C23 позволяют обойтись без массива вовсе.

Вопросы и ответы

Как перевести строку Base64 в массив байтов в C#?

Во время выполнения хватит byte[] data = Convert.FromBase64String(s);. А чтобы зашить байты в код, выберите здесь в поле Язык C# и вставьте объявление new byte[] { ... } в исходник.

Почему в массиве для Java отрицательные числа?

byte в Java знаковый и хранит значения от −128 до 127. Байты от 0x80 до 0xff записываются как числа от −128 до −1, поэтому 0xde превращается в -34. Биты те же самые; b & 0xff возвращает беззнаковое значение.

Как превратить Base64 в байты в Python?

base64.b64decode(s) возвращает объект bytes. Если нужно записать это значение литералом b'\x..', выберите здесь в поле Язык Python.

Для JavaScript получается Uint8Array?

Да, const data = new Uint8Array([...]) с hex-значениями. Он работает в браузерах и Node.js; в Node его можно обернуть в Buffer.from(data), если API нужен Buffer.