VB和c中unsigned数据类型转化转换问题
VB和c中unsigned数据类型转化转换问题
在c语言有unsigned的数据类型,unsigned int 的取值范围为:0----2的16次方-1,而vb中integer的取值范围是负值到正值,怎么实现二者的转换
谢谢
问题点数:20、回复次数:9Top
1 楼wuyazhe(wyz&xyl)回复于 2005-06-02 21:12:11 得分 5
vb的Integer取值范围是32767 ~ -32767,用二进制表示就是正好16位,最高位是符号为。c语言的unsigned int也是16位,但是最高位也表示数据,没有负号位,范围是0 ~ 65535。如何转换。这个。。。
好像没什么好方法。到了 .Net就好了。
vb6的话,只能用long去接收unsigned int的值,在vb6里,用大的空间来表示。Top
2 楼supergreenbean(超级绿豆(MSMVP - VB) - 升级归来~)回复于 2005-06-02 21:46:38 得分 0
你说的是unsigned short吧,在值传递的时候可以用vb的integer类型,而在使用的时候可以用copymemory将值复制到long型去
Top
3 楼webasas01()回复于 2005-06-02 22:01:47 得分 0
我现在是用vb从二进制文件中读取两个字节长度的无符号整形数据,正好是16位,但是他有的时候会超出vb的integer型的范围,get,,intNum
如果用long型的话
get #1,,longNum,
这样取到的就是四个字节的数据,不符合要求!!
请高手指点Top
4 楼webasas01()回复于 2005-06-02 22:02:44 得分 0
不是,是从16进制文件中读取两个字节长度的数据,得到一个无符号整形变量。Top
5 楼supergreenbean(超级绿豆(MSMVP - VB) - 升级归来~)回复于 2005-06-02 22:10:09 得分 0
你用integer类型读取2字节数据是没有问题的,只有当你使用其值得时候才涉及到符号问题Top
6 楼wuyazhe(wyz&xyl)回复于 2005-06-02 23:35:24 得分 0
supergreenbean(超级绿豆 - 要准备发芽了)
c语言里,unsigned int 和 unsigned short 不是一样的么?Top
7 楼webasas01()回复于 2005-06-03 08:00:13 得分 0
你用integer类型读取2字节数据是没有问题的,只有当你使用其值得时候才涉及到符号问题
现在就是来讨论来解决这个问题的
Top
8 楼of123()回复于 2005-06-03 08:21:48 得分 10
get #1,,intNum
Dim lngNum As Long
lngNum = Val("&H" & Hex(intNum) & "&")
'or
lngNum = IIf(intNum < 0, intNum + &H10000&, intNum)
Top
9 楼supergreenbean(超级绿豆(MSMVP - VB) - 升级归来~)回复于 2005-06-03 08:51:45 得分 5
unsigned short 是 2字节长度
unsigned int 是 4字节长度
使用方法如 of123() 所说Top




