バイナリ関数 ​

このページは機械翻訳により提供されています。翻訳内容と英語版に相違がある場合は、英語版が優先されます。

Binaryは、生バイト用のWEL型です。ファイルコンテンツを処理する場合、暗号化関数がダイジェストを返す場合、システムがJSONフィールド内でbase64エンコードされたデータを送信する場合に表示されます。

バイナリ関数は、バイトをJSONで安全なテキスト表現に変換します。また、生バイトを測定およびスライスします。

バイトはテキストではありません

BinaryとStringは異なる型であり、WELはそれらを暗黙的に変換しません。 String()はBinaryを完全に拒否します。

decode_stringを使用して、バイトを読み取り可能なテキストに変換するには、そのバイトの文字エンコーディングを指定します。 encode_base64またはencode_hex_stringを使用して、バイトをJSONフィールドに安全に格納できるテキストに変換します。

機能の提供状況

WELは現在、一部のお客様にご利用いただけます。ご利用のワークスペースで利用可能かどうかを確認するには、Customer Success Representativeにお問い合わせください。

Base64 ​

Base64は、生バイトをJSONフィールドまたはURLに埋め込むための標準的な方法です。

encode_base64 ​

バイトをbase64文字列としてエンコードします。

text
encode_base64(binary, mode)
パラメーター説明
バイナリエンコードするバイト。
mode任意です。 URLセーフな出力には'url'、パディングを省略するには'no_pad'、その両方には'url_no_pad'。
バイトをbase64としてエンコード

次の例では、バイトをbase64文字列としてエンコードします:

Formula

text
encode_base64(Binary('ABC'))

出力

text
QUJD

URL内のトークンにはURLモードを使用

標準のbase64には+と/が含まれ、URLやファイル名で特別な意味を持つ場合があります。 'url'モードでは、それらが-と_に置き換えられます。クエリ文字列またはURLパス内のトークンには、このモードを使用します。

decode_base64 ​

base64文字列をバイトにデコードします。パディングが欠落していても許容します。

text
decode_base64(text, mode)
パラメーター説明
テキストデコードするbase64文字列。
mode任意です。 URLセーフな入力には'url'。
base64文字列をバイトにデコード

次の例では、base64文字列をバイトにデコードします:

Formula

text
decode_base64('QUJD')

出力

text
0x"414243"

16進数 ​

Hexは各バイトを2文字で表し、サイズと引き換えに人間が読みやすくします。

encode_hex_string ​

バイトを、1バイトあたり2文字の16進数文字列に変換します。

Hexはbase64より多くの領域を必要としますが、人間が読みやすい表現を提供します。チェックサムとダイジェストでは、一般的にこの形式が使用されます。

text
encode_hex_string(binary, mode)
パラメーター説明
バイナリエンコードするバイト。
mode任意です。大文字出力には'upper'。
バイトをhex文字列としてエンコード

次の例では、バイトを16進数文字列としてエンコードします:

Formula

text
encode_hex_string(Binary('ABC'))

出力

text
414243

decode_hex_string ​

16進数文字列をバイトに変換します。モードが'strict'でない限り、先頭の0xまたは末尾のhを取り除きます。

text
decode_hex_string(text, mode)
パラメーター説明
テキストデコードするhex文字列。
mode任意です。プレフィックスとサフィックスを拒否するには'strict'。
hex文字列をバイトにデコード

次の例では、16進数文字列をバイトにデコードします:

Formula

text
decode_hex_string('414243')

出力

text
0x"414243"

Quoted-printable ​

Quoted-printableは、メール本文などの主にASCIIテキスト向けのMIMEエンコーディングです。

encode_quoted_printable ​

RFC 2045で定義されているMIME quoted-printableとして、76列のソフト改行を使用してバイトをエンコードします。

メール本文では、コンテンツの大部分がASCIIで、コンパクトさよりも読みやすさが重要な場合にquoted-printableを使用します。

text
encode_quoted_printable(binary)
パラメーター説明
バイナリエンコードするバイト。
バイトをquoted-printableとしてエンコード

次の例では、等号を含むバイトをquoted-printableとしてエンコードします:

Formula

text
encode_quoted_printable(Binary('a=b'))

出力

text
a=3Db

decode_quoted_printable ​

MIME quoted-printableテキストをバイトにデコードします。

text
decode_quoted_printable(text)
パラメーター説明
テキストデコードするquoted-printable文字列。
quoted-printable文字列をバイトにデコード

次の例では、quoted-printable文字列をバイトに戻すデコードを行います:

Formula

text
decode_quoted_printable('a=3Db')

出力

text
0x"613D62"

測定とスライス ​

次の関数は、テキストとして解釈せずに、生バイト範囲を直接測定および抽出します:

byte_length ​

バイト数を返します。

byte_lengthは文字数ではなく、バイト数を返します。 lengthはテキスト内のコードポイントをカウントし、grapheme_lengthは代わりにユーザーが認識する文字(書記素クラスタ)をカウントします。 ASCII以外では、この3つが異なる場合があります。

text
byte_length(binary)
パラメーター説明
バイナリ測定するバイト。
文字列のバイト長を測定

次の例では、ASCII文字列のバイト長を測定します:

Formula

text
byte_length(Binary('ABC'))

出力

text
3

byte_slice ​

オフセットと長さに基づいて、連続したバイトを抽出します。

text
byte_slice(binary, offset, length)
パラメーター説明
バイナリスライスするバイト。
offsetゼロベースの開始バイト。
length取得するバイト数。
バイト範囲を抽出

次の例では、オフセット1から始まる3バイトを抽出します:

Formula

text
byte_slice(Binary('ABCDEF'), 1, 3)

出力

text
0x"424344"

バイトのスライスにより文字が分割される可能性があります

非ASCII文字は、UTF-8で複数のバイトを占有する場合があります。バイトスライスにより、これらの文字の1つが分割され、無効なバイトシーケンスが生成される可能性があります。

データがテキストの場合は、substringまたはgrapheme_substringを使用してテキストとしてスライスします。

ユースケース: ファイルを添付してチェックサムを記録 ​

宛先は、JSONフィールド内のbase64エンコードされたファイルコンテンツと、16進数形式のSHA-256チェックサムを想定しています。バイナリ関数を使用してファイルをエンコードし、チェックサムを計算します:

入力

json
{
  "filename": "note.txt",
  "content": "ABC"
}

Formula

text
let bytes = Binary(_.content)
do {
  filename: _.filename,
  size_bytes: byte_length(bytes),
  content_base64: encode_base64(bytes),
  sha256: hex_sha256(bytes)
}

出力

json
{
  "filename": "note.txt",
  "size_bytes": 3,
  "content_base64": "QUJD",
  "sha256": "b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78"
}

let … doはコンテンツを一度だけバイトに変換し、3つの派生フィールドはすべて同じ値を読み取ります。

最終更新日: