请问 我想在程序里表示一个数如59645 我把它用16进制的表示成 &HE8FD,为什么程序运行时它的值不是59645,而是-5891呢,该如何解决呢?先谢过了!
解决方案 »
- 用VB怎么制作登陆器
- vb访问outlook的安全设置问题
- treeview删除添加节点出错:run-time error '35605,This item's control has been deleted--在线等待
- 新手提问:如何打印DATAGRID上的内容?
- 关于程序启动发生MSSTDFMT.DLL错误?高手请进
- 如何让计算机自动识别考生创建了一个图表
- 如何用API保存bmp图像
- VB下制作截屏小程序
- 求救!我的InstallShield7.02eval在使用15天后:( ,我需要Code!!!谁能提供给我一个InstallShield7.02的注册Code?
- 关于OpenDialog控件的问题?
- 查询问题
- 100分请教VB调用Outlook的问题?
解决就是用long型的来保存,你试试看?
-5891
? clng("&HE8FD")
59645
而const myconstval as long = &HE8FD 是把Integer(默认的)常数转为Long型,也是可以的
const myconstval as long = &HE8FD不可以吧?
&HE8FD本身已经是个负数了
============
和h 一起,“&HXXXX” 表示十六进制。
那const myconstval as long = "&HE8FD" 为什么又可以呢???
但const myconstval as double= "&HFFFFE8FD"又不行了
不解中,请高手指点。
VB的隐式类型转换和Hex()函数都是基于Long型的
&HFFFFE8FD=4,294,961,405
长整型的范围是-2,147,483,648 到 2,147,483,647不知道我的理解对不对呢
但我现在想用十六进制来定义 即想用&HFFFFE8FD来代替4294961405 ,如写成const myconstval as double=&HFFFFE8FD的话,在程序里myconstval就变成了负数,该如何解决这个问题呢?
无法使用VB6的任何隐式或显式的方式将它转换成数值(Long或Double)
我能想到的方法是自己封装一个转换函数
public function MyHexToDbl(ByVal strHex as string) as Double
将16进制数作为字符串传入
自己写一个转换为Double值的算法输出
FFFFE8FD=15*16^7+15*16^6+15*16^5+15*16^4+14*16^3+8*16^2+15*16^1+13*16^0=4294961405
算法就不写了
之后:Const myconstHexString as string="&HFFFFE8FD"
dim mydblVal as double
mydblVal =myhextodbl(myconstHexString )
因为楼主对这个常量的用途没有作更多的解释
所以暂时只能想到这个蠢办法
if ********=myconstHexString then
...
else
...
end if
就这样
其实写成const myconstHexString as double=4294961405# 就可以达到这个目的,我只是想知道是否有方便的办法可以用十六进制声明这个常量。