Git Base85 エンコーダー
「hello」はGit Base85の行EXk~0{ZvX%Qになり、先頭のEはその行に5バイトが入っていることを示します。Gitがバイナリパッチで使う方式で、Adobe Ascii85とは別物です。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- hello
- 結果
- EXk~0{ZvX%Q
- 計算モード
- Encode
- 出力形式
- Text
- バリアント
- git_base85
Git は統合 diff の中に、Adobe Ascii85 でも単純な Base64 でもない独自の Base85 方言でバイナリファイルの変更を格納します。
テキストまたは hex を Git Base85 行に符号化
既定の format は text です。エンジンは文字列を UTF-8 符号化し、最大 52 オクテット—Git が各バイナリパッチ行で使う上限と同じ—の塊でバイトを走査します。
各塊ごとに長さ接頭辞(A は 1 バイト、B は 2、Z までで 26、続けて a が 27、z が 52)を書き、4 バイトの各グループを Git の 85 記号アルファベット—数字、大文字・小文字、引用符・カンマ・ピリオド・スラッシュ・バックスラッシュを除いた句読点—の 5 文字に展開します。パッチがメールやシェルでも扱いやすくなるためです。
末尾の短いグループは演算のためにゼロ埋めされ、その後デコーダが接頭辞だけで正確なバイト数を復元できるよう、5 文字ブロックの正しい個数に切り詰められます。text は偶数長の十六進文字列(空白とアンダースコア可)でなければならず、それらのバイトは UTF-8 層なしで符号化されます。空入力は有効で、0 バイト・0 行の空結果になります。
長さ接頭辞付き行の復号と無効入力の拒否
mode を decode にし、1 行以上の Git Base85 行を text に入れてください。空行は無視されるため、大きなパッチからコピーした断片を貼り付けられます。接頭辞の後は、宣言されたバイト数に必要な 4 バイトグループ数のちょうど 5 倍の記号でなければならず—多すぎても少なすぎてもエラーであり、黙って切り詰めません。
符号化文字はすべて Git のアルファベット内になければならず、Adobe Ascii85 から借りた記号(例えば単独の小なりや、Git が使わないゼロ連続の z)は直ちに失敗し、異方言をバイナリパッチ本体として誤適用しないようにします。復号が成功すると、すべての行が順に 1 つのバイトバッファへ連結されます。
Git Base85とAscii85の違い
git diff でバイナリを見たあと Base85 エンコーダーを検索し、別アルファベット・任意の less-than-tilde 包み・ゼロ連続の z 省略がある Adobe Ascii85 ツールに着地することがよくあります。
Git の方言は意図的に異なり、数字ゼロから始まる固定 85 記号、行ごとの必須長さ接頭辞、Adobe 区切りなし、z 圧縮トークンなしです。本ランディングは git base85 エンコーダー、git バイナリパッチ base85、git base85 復号といった Git 固有の検索意図に専用であり、一般的な Ascii85 ページと競合しません。
典型的な流れは、小さなバイナリ blob の hex ダンプをテストフィクスチャ用に符号化し、期待する apply 結果の横に長さ接頭辞付き行を固定し、パイプライン実行ごとに復号してアルファベットのずれを検出します。
別の流れでは、サイズが既知なら literal N ヘッダを除き、GIT binary patch のデータ行だけを貼って検査用にバイトを復元します。
活用例
GIT binary patch 本体の確認
git diff --binary からコピーした長さ接頭辞付き Base85 行を復号し、パッチ全体を apply せずに圧縮リテラルの hex ダンプを得ます。
互換テストフィクスチャの作成
既知のバイト列を Git Base85 行に符号化し、apply ツール・マージボット・Git のアルファベットと長さ接頭辞に一致すべき文書の単体テストに使います。
よくある質問
テキストを Git Base85 に符号化するには?
result には長さ文字 A–z で始まる改行結合行が入り、bytes は UTF-8 長です。
Git バイナリパッチの Base85 行を復号するには?
mode を decode にし、長さ接頭辞付き行を text に入れてください。バイナリなら format hex、format text(既定)はバイトが有効な Unicode のとき UTF-8 を返します。
Git Base85 と Adobe Ascii85 の違いは?
Git は別の 85 文字アルファベットを使い、行ごとの長さ接頭辞(A–Z、a–z)を必須とし、<~ ~> 区切りは使わず、Adobe のゼロ連続 z 省略も実装しません。
Git Base85の各行の最初の文字は何を表しますか?
その行のバイト数です。Aは1、Bは2と続いてZが26、次にaが27からzの52までを表します。1行は最大52バイトで、デコード時はこの文字から正確なバイト数を復元します。
テキストではなく生のバイトを符号化できますか?
できます。十六進数の項目を選び、偶数桁の十六進数を入力します。空白や下線を入れても構いません。バイトはUTF-8のテキストを経由せず、そのまま符号化されます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/base85-git \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"hello"}'const res = await fetch("https://api.kit.forhosting.com/enc/base85-git", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "hello"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/base85-git",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "hello"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/base85-git", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"hello"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"hello"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/base85-git", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "hello"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.base85_git",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
各データ行は長さ接頭辞の 1 文字—復号後 1〜26 バイトは A〜Z、27〜52 バイトは a〜z—で始まり、その後にペイロード 4 バイトごとにアルファベット 5 文字が続きます。GIT binary patch 節の確認、apply 失敗の調査、互換ペイロードを出すツール開発には、まさにそのアルファベットと行形式を話す変換器が必要です。本機能は UTF-8 テキストまたは十六進バイトを Git Base85 行に符号化し、逆に復号して、不正な記号・誤った長さ接頭辞・不一致なグループ長を invalid_input で拒否します。成功した API 呼び出しは 1 件あたり $0.002、検証失敗は課金されません。
テキストまたは hex を Git Base85 行に符号化
必須の文字列フィールド text を含む JSON 本体を送り、mode を encode のままにするか、明示的に mode を encode に設定してください。ペイロードが生のバイナリのときは format を hex にしてください。応答には result(改行結合の行)、mode encode、format、variant git_base85、bytes(符号化前のペイロード長)、lines(空でない出力行数)が含まれます。
長さ接頭辞付き行の復号と無効入力の拒否
空でない各行は有効な長さ文字で始まらなければならず、それ以外の先頭文字は長さ接頭辞規則を示す invalid_input で失敗します。format text(既定)ではそれらのバイトを致命的デコーダ付き UTF-8 として解釈し、無効シーケンスは置換文字ではなく invalid_input を上げ、下流の diff を壊しません。format hex では回収バイトの小文字十六進文字列が返り、実在の GIT binary patch の zlib 圧縮リテラルなど可読テキストではないペイロードに向きます。応答は mode decode、format、variant git_base85、復号長の bytes、空でない入力行数の lines をエコーします。検証失敗はプリペイド API で課金されないため、疑わしい貼り付けの確認は運用者に安全で、パース成功でマージをゲートするスクリプトにも安価です。
Ascii85 との違いと API の使い方
バックエンド・ボット・継続的インテグレーションが残高付きで Git Base85 本体を出力または検証するときは、成功 1 件あたり $0.002 のプリペイド KIT API を使い、検証失敗はその残高を消費しません。
連携の活用例
CI での方言混在の検出
パイプラインが異方言の Base85 を有効なバイナリパッチ本体とみなす前に、Adobe Ascii85 や壊れた貼り付けを invalid_input で拒否します。
技術的な質問
無効な Base85 入力ではどうなりますか?
誤った長さ接頭辞、Git アルファベット外の文字、誤ったグループ長、format が text のときの無効 UTF-8 で invalid_input になります。検証失敗は課金されません。
Git Base85 エンコーダーは無料ですか?
ブラウザツールは端末上で無料です。API は成功 1 件あたり $0.002 のプリペイド KIT 残高を使い、invalid_input 応答は残高を消費しません。