文章目录

第100章 Caché 函数大全 $ZCRC 函数

校验和函数。

大纲
$ZCRC(string,mode,expression)

参数

  • string 对其执行校验和操作的字符串。
  • mode 指定要使用的校验和模式的整数代码。
  • expression 可选-初始“seed种子”值,指定为整数。如果省略,则默认为零(0)。
描述

$ZCRC对字符串执行循环冗余校验,并返回整数校验和值。 $ZCRC返回的值取决于使用的参数。

  • $ZCRC(string,mode)计算并返回string的校验和。 mode的值确定$ZCRC计算的校验和的类型。
  • $ZCRC(string,mode,expression)使用mode指定的模式对字符串进行计算并返回校验和。检查多个字符串时,表达式提供初始的“seed种子”值。它允许在多个字符串上依次运行$ZCRC计算,并获得相同的校验和值,就好像已将那些字符串串联在一起,然后在结果字符串上运行$ZCRC一样。
参数

string

字节字符串。可以指定为值,变量或表达式。仅使用字节字符串,否则将收到<FUNCTION>错误。

mode

要使用的校验和算法。所有校验和模式都可以使用8位(ASCII)或16位Unicode(宽)字符。模式的合法值为:

Mode Computes
0 8位字节和。简单地将字符串中字符的ASCII值相加。因此,$ZCRC(2,0)=50$ZCRC(22,0)=100$ZCRC(23,0)=101$ZCRC(32,0)=101
1 字节的8位异或
2 一种16位数据树CRC-CCITT
3 一种16位数据树CRC-16
4 一种适用于XMODEM协议的16位循环冗余码
5 一种正确的16位CRC-CCITT
6 正确的16位CRC-16
7 正确的32位CRC-32。这对应于OS X上的CKSUM实用程序算法3,以及Java实用程序包中的CRC32类。

MSM语言模式中的Caché支持模式值0和1。所有其他模式值都会导致<Funct>错误。

expression

作为初始seed“种子”值的参数。 $ZCRC将表达式添加到为字符串生成的校验和中。这使您可以依次在多个字符串上运行$ZCRC计算,并获得保存校验和的值,就好像已将那些字符串串联在一起并在结果字符串上运行$ZCRC一样。

示例

下面的示例在包含字母A,B和C的字符串上使用mode = 0,并在每种情况下返回校验和198:

DHC-APP> WRITE $ZCRC("ABC",0)
198
DHC-APP>WRITE $ZCRC("CAB",0)
198
DHC-APP>WRITE $ZCRC("BCA",0)
198

校验和的得出如下:

/* 65+66+67 = 198 */
DHC-APP>WRITE $ASCII("A")+$ASCII("B")+$ASCII("C")
198

以下示例显示了每个模式为字符串“ABC”返回的值:

DHC-APP>d ##class(PHA.TEST.Function).ZCRC()
 
mode 0=198
mode 1=64
mode 2=14740
mode 3=1411
mode 4=14740
mode 5=23011
mode 6=17697
mode 7=2743272264