将十六进制字符串转换为十进制数字,反之亦然。
大纲
$ZHEX(num)
$ZH(num)
参数
num - 计算结果为数值的表达式可以转换为带引号的字符串或整数(有符号或无符号)。
描述$ZHEX
将十六进制字符串转换为十进制整数,或将十进制整数转换为十六进制字符串。
如果num是字符串值,则$ZHEX
会将其解释为数字的十六进制表示形式,并以十进制返回该数字。确保将字符串值放在引号内。
如果num是数字值,则$ZHEX
会将其转换为十六进制格式的数字的字符串表示形式。如果初始或最终数值不能表示为8字节有符号整数,则$ZHEX
会发出错误。
可以使用%SYSTEM.Util
类的HexToDecimal()
和DecimalToHex()
方法执行相同的十六进制/十进制转换:
DHC-APP>WRITE $SYSTEM.Util.DecimalToHex("27")
1B
DHC-APP>WRITE $SYSTEM.Util.HexToDecimal("27")
39
DHC-APP>WRITE $SYSTEM.Util.HexToDecimal("1B")
27
$ZHEX
可以与$CHAR
一起使用,以使用十六进制字符代码$CHAR($ZHEX(“hexnum”))
指定Unicode字符。
num
字符串值或数字值,包含字符串值或数字值的变量或计算结果为字符串值或数字值的表达式。
字符串值将读取为十六进制数字,并转换为正十进制整数。$ZHEX
将大写字母和小写字母“A”
至“F”
都识别为十六进制数字。它会截断前导零。它不能识别正负号或小数点。当遇到非十六进制字符时,它将停止对字符串的求值。因此,字符串“F”
,“f”
,“00000F”
,“F.7”
和“FRED”
的结果均为十进制15。如果字符串中遇到的第一个字符不是十六进制字符,则$ZHEX将计算字符串为零。因此,字符串“0”
,“0.9”
,“+F”
,“-F”
和“H”
均等于零。空字符串(“”
)是无效值,并发出<FUNCTION>
错误。
整数值将读取为十进制数,并转换为十六进制。整数可以是正数或负数。 $ZHEX
识别前导的正号和负号。它会截断前导零。它计算嵌套的算术运算。但是,它不能识别小数点。如果遇到小数点字符,它将发出<FUNCTION>
错误。因此,整数217
、0000217
,+217
,-+-217
都等于十六进制D9。 -217
,-0000217
和-+217
都等于FFFFFFFFFFFFFF27
(二进制补码)。其他值,例如浮点数,尾随符号和非数字字符,将导致<FUNCTION>
或 <SYNTAX>
错误。
DHC-APP>WRITE $ZHEX("F")
15
DHC-APP>WRITE $ZHEX(15)
F
DHC-APP>WRITE $ZHEX("1AB8")
6840
DHC-APP>WRITE $ZHEX(6840)
1AB8
DHC-APP>WRITE $ZHEX("XXX")
0
DHC-APP>WRITE $ZHEX(-1)
FFFFFFFFFFFFFFFF
DHC-APP>WRITE $ZHEX((3+(107*2)))
D9
注意
强制进行十六进制解释
要强制将整数值解释为十六进制,请将任何非十六进制字符连接到num参数的末尾。例如:
DHC-APP>WRITE $ZHEX(16_"H")
22
- 参数为字符串时解释为16进制转换为10进制表达(有双引号)
- 参数为数字时时解释为10进制转换为16进制表达(无双引号)