文章目錄
-
第五十九章 Caché 函式大全 $SCONVERT 函式 - 大綱
- 引數
- 描述
- 示例
第五十九章 Caché 函式大全 $SCONVERT 函式
將二進制編碼值轉換為數字,
大綱
$SCONVERT(s,format,endian,position)
$SC(s,format,endian,position)
引數
- s 一串8位位元組,編碼為一個數字,有效值的限制取決于所選的格式,
- format 以下格式代碼之一,指定為帶引號的字串:S1,S2,S4,S8,U1,U2,U4,F4或F8,
- endian 可選—布林值,其中0 =小端,而1 =大端,默認值為0,
- position 可選-開始轉換的8位位元組字串中的字符位置,字符位置從1開始計算,默認值為1,如果指定位置,則必須指定endian或占位符逗號,
描述
$SCONVERT使用指定的格式將s從8位位元組的編碼字串轉換為數值,
以下是受支持的格式代碼:
- S1 有符號整數,編碼為一個8位位元組的字串,該值必須在-128到127(含)范圍內,
- S2 有符號整數,編碼為兩個8位位元組的字串,該值必須在-32768到32767(包括)之間,
- S4 有符號整數,編碼為四個8位位元組的字串,該值必須在-2147483648到2147483647之間(含),
- S8 帶符號的整數,編碼為八個8位位元組的字串,該值必須在-9223372036854775808到9223372036854775807(含)之間,
- U1 無符號整數編碼為一個8位位元組的字串,最大值為256,
- U2 無符號整數編碼為兩個8位位元組的字串,最大值為65535,
- U4 無符號整數編碼為四個8位位元組的字串,最大值是4294967295,
- F4 IEEE浮點數編碼為四個8位位元組的字串,
- F8 IEEE浮點數編碼為八個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
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/184799.html
標籤:其他
上一篇:JavaCV開發詳解之21:如何使用JavaCV接入gb28181的ps流并推流到流媒體服務和接入海康大華sdk回呼h264/hevc裸流
下一篇:Java基礎
