Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

$SCONVERT

バイナリでエンコードされた値を数値に変換します。

Synopsis

$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 ビット・バイト文字列での使用のみを想定しています。$SCONVERT を Unicode インスタンスの Caché 上で使用し、エンコードされた文字列内のいずれかの文字が $CHAR(256) から $CHAR(65536) の範囲内にある場合、返り値は予測できません。

引数 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

関連項目

FeedbackOpens in a new tab