JMPでは、BLOBと呼ばれるバイナリ大容量オブジェクト(Binary Large OBject)も扱うことができます。以下の関数は、16進数の値、数値、文字、BLOBの間での変換を行います。一部の関数については、表6.6の後に詳しい説明があります。
『スクリプト構文リファレンス』の文字関数を参照してください。
構文 |
説明 |
---|---|
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-16le、utf-16be、us-ascii、iso-8859-1、ascii~hex、shift-jis、euc-jpもサポートされています。 |
Hex to Number |
16進数表記の文字列を、数値に変換する。 |
Char To BLOB("string") Char To BLOB("string", "encoding") |
文字列をバイナリ(BLOB)に変換する。 BLOBのデフォルトのエンコーディングはutf-8です。また、utf-16le、utf-16be、us-ascii、iso-8859-1、ascii~hex、shift-jis、euc-jpもサポートされています。 |
BLOB To Char("blob") BLOB To Char("blob", "encoding") |
バイナリデータ(blob)を文字列に変換する。 文字列のデフォルトのエンコーディングはutf-8です。また、utf-16le、utf-16be、us-ascii、iso-8859-1、ascii~hex、shift-jis、euc-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進数のコードです。
HexとHex 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)によって表わされます。 |