將二進位制編碼值轉換為數位。
$SCONVERT(s,format,endian,position)
$SC(s,format,endian,position)
$SCONVERT
使用指定的格式將s從8位元位元組的編碼字串轉換為數值。
以下是受支援的格式程式碼:
字串s必須包含從指定字元位置開始和之後的足夠字元,以滿足格式程式碼所需的8位元位元組數。例如,$SCONVERT(s,"S4",0,9)
要求s的長度至少為12個字元,因為解碼結果來自字元位置9、10、11和12。超出此範圍的值將導致<VALUE OUT OF RANGE>
錯誤。
$SCONVERT
僅適用於8位元位元組字串。如果$SCONVERT
在Caché的Unicode範例上,並且編碼字串中的任何字元在$CHAR(256)
到$CHAR(65536)
範圍內,則返回值是不可預測的。
如果引數s是數位值,則在解碼之前將其轉換為包含規範數位形式的字串。
可以使用IsBigEndian()
類方法來確定在作業系統平臺上使用的位順序:1 = big-endian位順序; 0 =小端位順序。
DHC-APP>WRITE $SYSTEM.Version.IsBigEndian()
0
$SCONVERT
提供$NCONVERT
運算的逆函數。
在下面的範例中,$SCONVERT
將兩位元組的二進位制編碼值轉換為數位:
/// d ##class(PHA.TEST.Function).SCONVERT()
ClassMethod SCONVERT()
{
SET x=$NCONVERT(258,"U2")
ZZDUMP x
SET y=$SCONVERT(x,"U2")
WRITE !,y
}
0000: 02 01 為258的十六進位制102
DHC-APP>d ##class(PHA.TEST.Function).SCONVERT()
0000: 02 01 ..
258
下面的範例$SCONVERT
將大位元組序的兩位元組二進位制編碼值轉換為數位:
/// d ##class(PHA.TEST.Function).SCONVERT1()
ClassMethod SCONVERT1()
{
SET x=$NCONVERT(258,"U2",1)
ZZDUMP x
SET y=$SCONVERT(x,"U2",1)
WRITE !,y
}
DHC-APP>d ##class(PHA.TEST.Function).SCONVERT1()
0000: 01 02 ..
258