问一个VB的小问题
在VB中如何构造一个16位的负整数? --------------------编程问答----------------------------------------编程问答-------------------- Short数据类型
Dim a As String = (-1 * (Int((9 * Rnd()) + 1))).ToString
Dim i As Integer = 0
Do While i < 3
Dim b As String = Rnd()
If Len(b) > 7 Then
a = a & b.Substring(2, 5)
i = i + 1
End If
Loop
Dim c As Long = a
MsgBox("个是一个随机的16位负数:" & c)
保存 16 位(2 字节)有符号整数,值的范围为 -32,768 到 32,767。 --------------------编程问答-------------------- 谢谢指正,不过按照你的意思short这个类型不能存16位数呀,报错为溢出,请老大解释,谢谢,不知我这样理解你的意思对否
按照你的意思,代码改成
--------------------编程问答-------------------- 你直接定义一个UShort,你就当他是负数不久可以了,不保存符号。如果用Short就只有15位。 --------------------编程问答-------------------- --------------------编程问答-------------------- 我自己也写了一段程序,不过经常出现-1~-255不能正常译码,显示为-1的现象,但-255~-32767段倒是没有问题
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As String = (-1 * (Int((9 * Rnd()) + 1))).ToString
Dim i As Integer = 0
Do While i < 3
Dim b As String = Rnd()
If Len(b) > 7 Then
a = a & b.Substring(2, 5)
i = i + 1
End If
Loop
Dim c As short = a'这里报错为溢出
MsgBox("个是一个随机的16位负数:" & c)
End Sub
我是用VB6做的 --------------------编程问答-------------------- 学习了~~~ --------------------编程问答-------------------- 楼主问的是数值大小吗?还是数据类型?
内置类型包括有符号,有无符号
有符号的,表示的范围中,一半是正数,一半是负数 因此,最大值,会显得小
如果,只是要求数值的大小,可以使用其他类型
然后再处理的时候,检验大小,
不知道楼主说的是16个数字,还是16个二进制位? --------------------编程问答-------------------- 学习、 --------------------编程问答-------------------- 可能我描述的不大清楚,
我用VB6自己做了的解码函数,我的这个函数是用于串口通讯上的,将串口传送过来的数据帧中的两个byte合并成一个有符号整数,但是解码函数经常出现在-1~-255之间的数解码成-1,超过-255的数解码正确。
因此在这里向各位大侠请教一下 --------------------编程问答-------------------- 楼主,你可能理解错数值的表示了
你是把原来一个字节的2数何在一起了
但同时,他们的表示位也变了
先说下,一个Byte 表示的数是 0~255 共256个数 有符号的是 -128~127
那么2个Byte就是 256 ×256 个数 即65536
但是, 你要处理的并不是16位个数, 而是,前 8位 和后8位的
那么如果前8 位 为最小值 1的话
16个位则是 00000001 00000000 正好是 256,
也就是说, 如果你要处理第一8 位数值 都 大于256 的
换句话说, 后8位 都是小于256,或者倍数的(在某个区间,因为,还有256 前端分隔)
建议楼组重新检查一下函数, 如果很难处理2个字节数据,还是单独处理比较好
补充:.NET技术 , VB.NET