3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

任意のデータを「クソ」でエンコードするエンコーダを作った。

仕様

  • 「0」のビットを「ク」、「1」のビットを「ソ」で表す
  • 各バイトを順に表す
  • 1バイトの中では、MSBからLSBの順に表す
  • デコード時、「ク」「ソ」以外の文字は無視する
  • デコード時、最後にビットが1バイトに足りず余った場合は、不足しているビットを0で埋める

クソポイント

  • 出力が「クソ」
  • 理論上は任意のデータを扱えるが、面倒なので今回のアプリでは UTF-8 のテキストのみをサポート
  • ビットを適当な文字で表すというのは、多分5000兆番煎じくらい

実装

const encoder = new TextEncoder();
const decoder = new TextDecoder();

function hirabunToKuso(hirabun) {
	const kusoData = encoder.encode(hirabun);
	let res = "";
	for (let i = 0; i < kusoData.length; i++) {
		for (let j = 7; j >= 0; j--) {
			res += (kusoData[i] >> j) & 1 ? "" : "";
		}
	}
	return res;
}

function kusoToHirabun(kuso) {
	const kusoData = [];
	let byte = 0, bit = 0;
	for (let i = 0; i < kuso.length; i++) {
		const idx = "クソ".indexOf(kuso.charAt(i));
		if (idx >= 0) {
			byte |= idx << (7 - bit);
			bit++;
			if (bit >= 8) {
				kusoData.push(byte);
				byte = 0;
				bit = 0;
			}
		}
	}
	if (bit > 0) kusoData.push(byte);
	return decoder.decode(new Uint8Array(kusoData));
}

アプリ

クソエンコーダ

クソエンコーダ

プロジェクトページ:mikecat/kuso_encoder: 「クソ」でエンコードするエンコーダ

3
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?