回 帖 发 新 帖 刷新版面

主题:[讨论]关于如果正确使用16进制数0X和0H的问题?

a=0h30
b=0x30
? a,b
? VARTYPE(a), VARTYPE(b)
? TYPE("a"), TYPE("b"), LEN("b")
? CHR(0xfe40)     &&打印汉字兀

-----------------------------------
运行结果:
0h30         48
Q N
Q N          1


-----------------------------------
问题1:
为什么在VFP系统中有时需要把16进制数写作:0X开头或0H开头呢?
如:
a=0h30在赋值情况下就要用0H开始的形式,
而在函数中求值时就又要改用0X开始头的形式
在MSCOMM控件输出要用0H开头的形式
请问为什么在同一个VFP系统中表达同一个16进制数需要这样用不同形式的表示方法呢?



问题2:
? VARTYPE(a), VARTYPE(b)
? TYPE("a"), TYPE("b"), LEN("b")
这两行用VARTYPE和TYPE求得A的类型为Q,在网上查得这是"大二进制对象(Blob)、可变长二进制型(Varbinary)"
请问这是什么意思,明明是十六进制为什么说是大二进制呢,而这个大二进制和可变长二进制具体是什么作用一般什么情况下使用呢?

再有为什么同是十六进制值表示的都是十进制数字0为什么一个是Q型,另一个是数据型呢?




谢谢!

回复列表 (共5个回复)

沙发

计算机内部不存在什么十进制、十六进制、八进制。只有二进制。采用前面几种进制表示数字,仅仅就是为了书写方便,任何非二进制的数字到CPU里全部要翻译成二进制。

十六进制:10(相当于十进制16)
十进制:10
如果没有区别,计算机无法从外表上分辨这2个数字到底是什么进制,所以十六进制前面要加识别符号ox

在二进制数字相同的情况下,使用十进制、十六进制、八进制最后结果都是一样的,并没有什么区别

板凳

为什么在VFP系统中有时需要把16进制数写作:0X开头或0H开头呢?

3 楼

我的理解是0H是用十六进制书写的,大二进制变量

0x是用十六进制书写的,整型变量

4 楼


那具体咐时候应该用0X和0H?有什么规则?

5 楼

但有一个问题不可否认的是用MSCOMM控件时有些ASCII超过127时的一些非汉字字符如果不用16进制发送就会出现到了接收端产生变异的情况,如:LED显示屏啊,打印机这些就会产生乱码或者终止执行的情况

我来回复

您尚未登录,请登录后再回复。点此登录或注册