Files
tankz/src/common/haxe/ru/m/Base64.hx
2026-07-13 22:41:32 +03:00

47 lines
1.1 KiB
Haxe

package ru.m;
import haxe.io.Bytes;
import haxe.crypto.BaseCode;
class Base64 {
private inline static var BASE64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
private static var codec:BaseCode;
public function new() {}
static function getCodec():BaseCode {
if (codec == null) {
var bytes = Bytes.ofString(BASE64);
codec = new BaseCode(bytes);
}
return codec;
}
public static function encodeBase64(content:haxe.io.Bytes):String {
var suffix = switch (content.length % 3) {
case 2: "=";
case 1: "==";
default: "";
};
var bytes = getCodec().encodeBytes(content);
return bytes.toString() + suffix;
}
private static function removeNullbits(s:String):String {
var len = s.length;
while (len > 0 && s.charAt(len - 1) == "=") {
len--;
if (len <= 0) {
return "";
}
}
return s.substr(0, len);
}
public static function decodeBase64(content:String):Bytes {
var bytes:Bytes = Bytes.ofString(removeNullbits(content));
return getCodec().decodeBytes(bytes);
}
}