第五十九章 Caché 函数大全 $SCONVERT 函数

2020-10-19  本文已影响0人  Cache技术分享

第五十九章 Caché 函数大全 $SCONVERT 函数

将二进制编码值转换为数字。

大纲

$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
上一篇 下一篇

猜你喜欢

热点阅读