スクリプトガイド > データタイプ > 16進数の関数とBLOB関数
公開日: 04/01/2021

16進数の関数とBLOB関数

JMPでは、BLOBと呼ばれるバイナリ大容量オブジェクト(Binary Large OBject)も扱うことができます。以下の関数は、16進数の値、数値、文字、BLOBの間での変換を行います。一部の関数については、表6.6の後に詳しい説明があります。

『スクリプト構文リファレンス』の文字関数を参照してください。

表6.6 16進数の関数とBLOB関数

構文

説明

Hex("text")

Hex("num")

Hex("blob")

テキスト(text)、数字(num)、またはBLOB(blob)を16進数表記に変換した文字列を戻す。

Char To Hexは別名です。

Hex To BLOB("hexstring")

16進数表記の文字列を、BLOBに変換する。

Hex To Char("hexstring", "encoding")

16進数表記の文字列を、指定されたエンコーディングに従い、文字列に変換する。

文字列のデフォルトのエンコーディングはutf-8です。また、utf-16leutf-16beus-asciiiso-8859-1ascii~hexshift-jiseuc-jpもサポートされています。

Hex to Number

16進数表記の文字列を、数値に変換する。

Char To BLOB("string")

Char To BLOB("string", "encoding")

文字列をバイナリ(BLOB)に変換する。

BLOBのデフォルトのエンコーディングはutf-8です。また、utf-16leutf-16beus-asciiiso-8859-1ascii~hexshift-jiseuc-jpもサポートされています。

BLOB To Char("blob")

BLOB To Char("blob", "encoding")

バイナリデータ(blob)を文字列に変換する。

文字列のデフォルトのエンコーディングはutf-8です。また、utf-16leutf-16beus-asciiiso-8859-1ascii~hexshift-jiseuc-jpもサポートされています。

BLOB Peek("blob", offset, length)

元のBLOBから、オフセットoffsetから始まる長さlengthバイトだけを抜き出し、新しいBLOBとして戻す。オフセットは0を基準にします。

Matrix to BLOB(matrix, type, bytesEach, endian)

行列からBLOBを作成する。行列の要素を1、2、または4バイトの符号付きまたは符号なしの整数、あるいは4または8バイトの浮動小数点数に変換する。

BLOB to Matrix(blob, "type", bytes, "endian", <nCols>)

blobのバイトを数値に変換して行列を作成する。

Hex(string)は、引数の各文字に対応する16進数のコードを返します。たとえば、次のようになります。

Hex( "Abc" );

は次を戻します。

"416263"

41、62、63はそれぞれ、A、b、cを表す16進数のコード(ASCII)です。

Hex to Char(string)は、16進数を文字に変換します。戻り値の文字が、有効な表示文字でない場合があります。すべての文字は、0-9、A-Z、またはa-zのいずれかの2文字で表されます。スペースまたはカンマは、無視されます。たとえば、次のようになります。

Hex To Char( "4142" );

は次を戻します。

"AB"

41と42は、それぞれAとBを表す16進数のコードです。

HexHex To Charは、逆の処理を行うため、たとえば、

Hex To Char( Hex( "Abc" ) );

は次を戻します。

"Abc"

Hex To BLOB(string)は、16進表記の文字列(string)をバイナリオブジェクトに変換します。

a = Hex To BLOB( "6A6B6C" );
Show( a );

a = Char To BLOB("jkl", "ascii~hex")

BLOB Peek(blob,offset,length)は、引数で指定されたバイトをblobから抽出します。

b = BLOB Peek( a, 1, 2 );
Show( b );

b = Char To BLOB("kl", "ascii~hex")

b = BLOB Peek( a, 0, 2 );
Show( b );

b = Char To BLOB("jk", "ascii~hex")

b = BLOB Peek( a, 2 );
Show( b );

b = Char To BLOB("l", "ascii~hex")

Hex(blob)は、blobを16進に変換します。

c = Hex( a );
Show( c );

c = "6A6B6C"

d = Hex To Char( c );
Show( d );

d = "jkl"

Concat(blob1,blob2)blob1 || blob2は、2つのblobを連結します。

e = Hex To BLOB( "6D6E6F" );
Show( e );
f = a||e;
Show( f );

e = Char To BLOB("mno", "ascii~hex")

f = Char To BLOB("jklmno", "ascii~hex")

Length(blob)は、blobのバイト数を戻します。

g = Length( f );
Show( g );

g = 6

blobがログにリストされる場合、コンストラクタ関数のChar To BLOB("...")とともに表示されます。

このとき、ASCIIの範囲外は、ASCII文字ではなく、波線のあとに16進数を示す方法で表記されます。なお、ASCIIの範囲は、スペース(space)から、閉じ中括弧(})までです(16進数のコードで言うと、20から7Dまでです)。たとえば、次のようになります。

h = Hex To BLOB( "19207D7E" );
Show( h );
i = Hex( h );
Show( i );

h = Char To BLOB("~19 }~7E", "ascii~hex")

i = "19207D7E"

Char To BLOB(string)は、文字列からBLOBを作成します。BLOB To Char(blob)は、BLOBから文字列を作成します。これらにおいて、表示できないコードやASCII文字ではないコードは、波線と16進数(~XX)によって表わされます。

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).