$SCONVERT (ObjectScript)
バイナリでエンコードされた値を数値に変換します。
構文
$SCONVERT(s,format,endian,position)
$SC(s,format,endian,position)
引数
引数 | 説明 |
---|---|
s | 数値をコンコードする 8 ビット・バイトの文字列。選択した format により、有効な値に対して制限が課せられます。 |
format | S1、S2、S4、S8、U1、U2、U4、F4、または F8 のいずれかの形式コード。引用符で囲んだ文字列で指定します。 |
endian | オプション — ブーリアン値。0 = リトル・エンディアン、1 = ビッグ・エンディアン。既定値は 0 です。 |
position | オプション — 8 ビット・バイトの文字列内の変換を開始する文字位置。文字位置は 1 からカウントします。既定は 1 です。position を指定する場合、endian またはプレースホルダのコンマも指定する必要があります。 |
説明
$SCONVERT は、指定された format を使用して、8 ビット・バイトのエンコードされた文字列の s を数値に変換します。
以下の format コードがサポートされます。
コード | 概要 |
---|---|
S1 | 1 つの 8 ビット・バイトの文字列にエンコードされた符号付整数。値の範囲は -128 ~ 127 です。 |
S2 | 2 つの 8 ビット・バイトの文字列にエンコードされた符号付整数。値の範囲は -32768 ~ 32767 です。 |
S4 | 4 つの 8 ビット・バイトの文字列にエンコードされた符号付整数。値の範囲は -2147483648 ~ 2147483647 です。 |
S8 | 8 つの 8 ビット・バイトの文字列にエンコードされた符号付整数。値の範囲は -9223372036854775808 ~ 9223372036854775807 です。 |
U1 | 1 つの 8 ビット・バイトの文字列にエンコードされた符号なし整数。最大値は 256 です。 |
U2 | 2 つの 8 ビット・バイトの文字列にエンコードされた符号なし整数。最大値は 65535 です。 |
U4 | 4 つの 8 ビット・バイトの文字列にエンコードされた符号なし整数。最大値は 4294967295 です。 |
F4 | 4 つの 8 ビット・バイトの文字列にエンコードされた IEEE 浮動小数点数。 |
F8 | 8 つの 8 ビット・バイトの文字列にエンコードされた IEEE 浮動小数点数。 |
文字列 s には、format コードで必要とされる 8 ビット・バイトの数に対応するように、指定された文字 position で始まりそれに続く分の十分な文字数を指定する必要があります。例えば、$SCONVERT(s,"S4",0,9) の場合、デコードされた結果が文字位置 9、10、11、12 から返されるので、s の長さは少なくとも 12 文字にする必要があります。この範囲を超える値を指定すると、<VALUE OUT OF RANGE> エラーが発生します。
$SCONVERT は、8 ビット・バイト文字列での使用のみを想定しています。
引数 s が数値である場合、デコードされる前に、そのキャノニック数値形式を含む文字列に変換されます。
IsBigEndian()Opens in a new tab クラス・メソッドを使用して、オペレーティング・システム・プラットフォームでどのビット順序を使用するかを決定できます (1 = ビッグ・エンディアン・ビット順、0 = リトル・エンディアン・ビット順)。
WRITE $SYSTEM.Version.IsBigEndian()
$SCONVERT は $NCONVERT の逆の操作を行います。
例
以下の例では、$SCONVERT はバイナリで 2 バイトにエンコードされた値を数値に変換します。
SET x=$NCONVERT(258,"U2")
ZZDUMP x
SET y=$SCONVERT(x,"U2")
WRITE !,y
以下の例では、$SCONVERT はバイナリで 2 バイトにエンコードされた値をビッグ・エンディアン順に数値に変換します。
SET x=$NCONVERT(258,"U2",1)
ZZDUMP x
SET y=$SCONVERT(x,"U2",1)
WRITE !,y
関連項目
-
$NCONVERT 関数