UUIDを整数に変換
550e8400-e29b-41d4-a716-446655440000は整数で113059749145936325402354257176981405696です。UUID・十進・十六進のどれからでも3つの形が分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 値
- 550e8400-e29b-41d4-a716-446655440000
- UUID (識別子)
- 550e8400-e29b-41d4-a716-446655440000
- 整数
- 113059749145936325402354257176981405696
- Hex
- 550e8400e29b41d4a716446655440000
- 接頭辞付き16進数
- 0x550e8400e29b41d4a716446655440000
UUIDは通常、ハイフンで 8-4-4-4-12 に区切った32桁の十六進として書かれる128ビットの識別子です。データベース、キュー、コンパクトな索引は同じビットを符号なし整数や素のhex文字列として保存することが多く、見た目だけでそれらの表記を比べると誤りが起きやすいです。このUUID→整数変換は、ハイフン付きUUID、128ビットの十進整数、十六進表記のいずれかを受け取り、同じビット列から3形式すべてを返します。対応はRFC 4122のビッグエンディアン配置です。16バイトを連結し、符号なし128ビット整数として読みます。
UUID整数とは何か、ビットはどう対応するか
RFC 4122とITU-T X.667はUUIDをちょうど16オクテットと定めます。よく見るハイフン表記では、それらのオクテットが32桁の十六進として 8-4-4-4-12 のグループに現れます。
同じ16バイトをネットワーク順(ビッグエンディアン)の符号なし整数として読むことが、本変換とPythonのuuid.UUID整数コンストラクタなど一般的なライブラリが使うUUID→整数の対応です。先頭8桁のhexが最上位32ビット、末尾12桁のhexが最下位48ビットです。
版は第7バイトの上位ニブル(hex添字12の文字)に、変種は第9バイトの上位ビット(hex添字16)にあります。これらの欄を返すので、値を変えずにRFC 4122のUUIDか、NCS予約形か、Microsoft変種か、別の予約パターンかを見分けられます。Nil UUIDは整数0です。
最大のUUID、fが32個並んだものは2の128乗マイナス1です。JavaScriptの数値は2の53乗マイナス1を超える整数を失うため、十進は常に正確な文字列で返します。
UUID→整数変換が本当に役立つ場面
識別子を符号なし128ビット整数やBINARY(16)として置く関係スキーマには、開発者がログからコピーするハイフン付き表記と往復する決定的な手段が必要です。テスト用フィクスチャとローダは、ハイフン付き・十進・hexの正規の三つ組を一度作り、言語ごとのクライアントが一致することを確かめれば、各リポジトリでBigIntシフトを再実装せずに済みます。
識別子の配置を説明する授業では、ビットを固定したままversionとvariantが同じ128ビット語のどこに座るか示せます。検証失敗は残高を消費しません。要求は識別子1件に限り、テストでuuid、integer、hexを固定すれば、移行、コンパクト保管、形式をまたぐ比較を、サービスごとにUUIDライブラリを立てずに再現できます。
活用例
コンパクトなデータベースとBINARY(16)保管
アプリのログにあるハイフン付きUUIDを、表やBINARY(16)列が置く正確な128ビット整数または32桁hexへ変換します。
フィクスチャと多言語テストの基準
正規のuuid / integer / hexの三つ組を作り、各クライアントライブラリが同じRFC 4122ビッグエンディアンビットを符号化することを確かめます。
よくある質問
逆に、整数やhexからUUIDへ戻せますか?
はい。 十進整数の文字列またはhex(0xは任意、最大32桁)を渡してください。同じビット列がハイフン付きUUID、十進、hexとして返ります。
これはMicrosoftの混在エンディアンGUIDメモリ配置ですか?
いいえ。 整数はRFC 4122 / ITU-T X.667に従う16バイトのビッグエンディアン読みです。
550e8400-e29b-41d4-a716-446655440000はどの整数になりますか?
113059749145936325402354257176981405696になり、区切りなしの十六進は550e8400e29b41d4a716446655440000です。あわせて、バージョン4でRFC 4122のバリアントであることも表示します。
十進の結果が数値ではなく文字列で返るのはなぜですか?
JavaScriptの数値は2の53乗から1を引いた値を超えると正確さを失いますが、UUIDは2の128乗から1を引いた値まであるためです。文字列にすれば、すべての桁が正確に保たれます。
最小値と最大値はいくつですか?
すべて0のnil UUIDは整数の0です。fが32個並ぶ最大のUUIDは、2の128乗から1を引いた値です。入力する十進の整数は、この2つの範囲内に収める必要があります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/dev/uuid-to-integer \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":"550e8400-e29b-41d4-a716-446655440000"}'const res = await fetch("https://api.kit.forhosting.com/dev/uuid-to-integer", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": "550e8400-e29b-41d4-a716-446655440000"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/uuid-to-integer",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": "550e8400-e29b-41d4-a716-446655440000"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/uuid-to-integer", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":"550e8400-e29b-41d4-a716-446655440000"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":"550e8400-e29b-41d4-a716-446655440000"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/uuid-to-integer", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"value": "550e8400-e29b-41d4-a716-446655440000"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.uuid_to_integer",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
UUID整数とは何か、ビットはどう対応するか
これは一部のMicrosoft APIが用いる、先頭3フィールドをリトルエンディアンで置く混在エンディアンのGUIDメモリ配置ではありません。本ツールはそのフィールドを入れ替えないため、ハイフン付き文字列はhexを連結して十六進として解析したときと同じ整数になります。数値欄decimal_numberは、値が安全整数であるときにだけ現れます。
入力契約、受け付ける形式、応答の形
ハイフン付き入力は大文字小文字を区別せず、常に正規の小文字で返します。十進整数は先頭にプラスを付けてもよく、0から2の128乗マイナス1まで(両端を含む)でなければなりません。より広い128ビット値はビットを失わないよう文字列で送ってください。例: value 550e8400-e29b-41d4-a716-446655440000 は版4のRFC 4122 UUIDで、hexは550e8400e29b41d4a716446655440000です。必須欄valueに、対応するいずれかの表記の識別子を入れたJSON本体をPOSTしてください。任意のfromは既定がautoで、解析を強制したいときはuuid、integer、hexにできます。自動判定は、任意の接頭辞urn:uuid:や波括弧を含むハイフン付きUUIDを優先し、次に0x接頭のhex文字列、次に32桁のコンパクトhex(ハイフンなしUUID)、次に十進整数、最後に左を32桁まで埋めた短いhex列を見ます。valueの別名としてuuid、text、input、idを、fromの別名としてformatまたはmodeを受け付けます。JSON数値は安全整数のときだけ受け付けます。value欠落、空文字、負の整数、33桁以上のhex、3形式のいずれにも合わない文字列は、問題を示すinvalid_inputで失敗し、課金されません。成功時の本体にはuuid(正規の小文字ハイフン付き)、integer(正確な十進文字列)、hex(32桁の小文字)、hex_prefixed(同じ桁に0x接頭)、input_format(uuid、integer、またはhex)、version(0–15)、variant(ncs、rfc4122、microsoft、またはreserved)、bit_width 128が含まれます。
UUID→整数変換が本当に役立つ場面
メッセージバスや倉庫のキーは、コンパクトなhex列と上流APIのハイフン付きUUIDを比べることが多く、両方を同じ整数(または同じ32桁hex)へ揃えると、大文字小文字、波括弧、接頭辞urn:uuid:による見かけの不一致を避けられます。実装は純粋なparseのtier Aなので、成功した呼び出しは公開の基本料金$0.002だけで、モデルトークンも外向きネットワークも使いません。
連携の活用例
形式をまたぐ識別子の照合
ハイフン付きUUID、0xのhexリテラル、十進キーを1つの整数に正規化し、倉庫の結合やAPI差分が表記で壊れないようにします。
技術的な質問
UUIDを128ビット整数へ変換するには?
valueにハイフン付きUUID(任意でurn:uuid:または波括弧)を送ってください。APIはintegerを正確な十進文字列として返し、あわせてhexと正規の小文字UUIDを返します。
整数がJSON数値ではなく文字列なのはなぜですか?
ほとんどのUUIDはJavaScriptの安全整数範囲(2^53−1)を超えます。十進文字列は常に正確です。decimal_numberは値が安全整数のときだけ含まれます。
UUIDから整数への変換の料金は?
ブラウザの道具は無料です。API要求は成功1回につき公開料金$0.002の前払いKIT残高を使い、無効な入力は課金されません。