Limited availability
toBase64()
㯠Uint8Array
ã¤ã³ã¹ã¿ã³ã¹ã®ã¡ã½ããã§ããã® Uint8Array
ãªãã¸ã§ã¯ãã®ãã¼ã¿ã«åºã¥ãã¦ã base64 ã§ã¨ã³ã³ã¼ããããæååãè¿ãã¾ãã
ãã®ã¡ã½ããã¯ã Window.btoa()
ãããæ¨å¥¨ããã¾ããç¹ã«ããªãã¸ã§ã¯ããæ ¼ç´ãã Uint8Array
ããã§ã«åå¨ããå ´åãæåã«æååã«å¤æããå¿
è¦ããªãããã§ãã
toBase64()
toBase64(options)
弿°
options
çç¥å¯
base64 æååã®æ¸å¼ãã«ã¹ã¿ãã¤ãºãããªãã¸ã§ã¯ãã§ããæ¬¡ã®ããããã£ãè¨å®ãããã¨ãã§ãã¾ãã
alphabet
çç¥å¯
使ç¨ãã base64 æåéåãæå®ããæååãæ¬¡ã®ããããã«ãªãã¾ãã
"base64"
ï¼æ¢å®å¤ï¼
æ¨æºã® base64 æåéåï¼+
ããã³ /
ã使ç¨ï¼ã§å
¥åãã¨ã³ã³ã¼ããã¾ãã
"base64url"
æ¨æºã® base64 æåéåï¼-
ããã³ _
ã使ç¨ï¼ã§å
¥åãã¨ã³ã³ã¼ããã¾ãã
omitPadding
çç¥å¯
Base64 æååã®çµããã®ããã£ã³ã°æå (=
) ãé¤å¤ãããã©ãããæå®ããè«çå¤ã§ããæ¢å®ã¯ false
ã§ãã
Uint8Array
ã®ãã¼ã¿ã表ã base64 ã¨ã³ã³ã¼ããããæååã§ãã
TypeError
次ã®ããããã®å ´åã«çºçãã¾ãã
options
ãªãã¸ã§ã¯ãã¯ãªãã¸ã§ã¯ãã§ã undefined
ã§ããªãå ´åãoptions.alphabet
ãæå¾
ãããå¤ã§ã¯ãªããã undefined
ã§ããå ´åããã®ä¾ã§ã¯ãæ¢å®ã® alphabet
ããã³ omitPadding
ãªãã·ã§ã³ã使ç¨ãã¦ãUint8Array
ã®ãã¼ã¿ã base64 æååã«ã¨ã³ã³ã¼ããã¦ãã¾ãã
const uint8Array = new Uint8Array([29, 233, 101, 161]);
console.log(uint8Array.toBase64()); // "HelloQ=="
ããã£ã³ã°ãªãã®ãã¼ã¿ã®ã¨ã³ã³ã¼ã
const uint8Array = new Uint8Array([29, 233, 101, 161]);
console.log(uint8Array.toBase64({ omitPadding: true })); // "HelloQ"
URL å¯¾å¿æåã§ãã¼ã¿ãã¨ã³ã³ã¼ã
ãã®ä¾ã§ã¯ãURL å¯¾å¿æåã使ç¨ã㦠base64 ã¨ã³ã³ã¼ããããæååã URLSearchParams
ãªãã¸ã§ã¯ãã«æ ¼ç´ãã¦ãã¾ãã
const uint8Array = new Uint8Array([46, 139, 222, 255, 42, 46]);
const base64 = uint8Array.toBase64({ alphabet: "base64url" });
const params = new URLSearchParams();
params.set("data", base64);
console.log(params.toString()); // "data=Love_you"
ã¹ããªã¼ã ã¨ã³ã³ã¼ã
ãã®ä¾ã¯ãå
ã®ææ¡ãæ¹å¤ãããã®ã§ãã¦ã¼ã¶ã¼ã©ã³ãã§ã¹ããªã¼ãã³ã°ãå®è£
ããæ¹æ³ã示ãã¦ãã¾ããããã¯ã stream
ãªãã·ã§ã³ã«å¯¾å¿ãã TextEncoder
API ãæ¨¡å£ãã¦ãã¾ãã
class Base64Encoder {
#extra;
#extraLength;
constructor() {
this.#extra = new Uint8Array(3);
this.#extraLength = 0;
}
// é¨åçã« https://github.com/lucacasonato/base64_streams/blob/main/src/iterator/encoder.ts ããæ´¾ç
encode(chunk = Uint8Array.of(), options = {}) {
const stream = options.stream ?? false;
if (this.#extraLength > 0) {
const bytesNeeded = 3 - this.#extraLength;
const bytesAvailable = Math.min(bytesNeeded, chunk.length);
this.#extra.set(chunk.subarray(0, bytesAvailable), this.#extraLength);
chunk = chunk.subarray(bytesAvailable);
this.#extraLength += bytesAvailable;
}
if (!stream) {
// assert: this.#extraLength.length === 0 || this.#extraLength === 3 || chunk.length === 0
const prefix = this.#extra.subarray(0, this.#extraLength).toBase64();
this.#extraLength = 0;
return prefix + chunk.toBase64();
}
let extraReturn = "";
if (this.#extraLength === 3) {
extraReturn = this.#extra.toBase64();
this.#extraLength = 0;
}
const remainder = chunk.length % 3;
if (remainder > 0) {
this.#extra.set(chunk.subarray(chunk.length - remainder));
this.#extraLength = remainder;
chunk = chunk.subarray(0, chunk.length - remainder);
}
return extraReturn + chunk.toBase64();
}
}
const encoder = new Base64Encoder();
console.log(
encoder.encode(Uint8Array.of(72, 101, 108, 108, 111), { stream: true }),
);
// "SGVs"
console.log(
encoder.encode(Uint8Array.of(32, 87, 111, 114, 108, 100), { stream: true }),
);
// "bG8gV29y"
console.log(encoder.encode());
// "bGQ="
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4