溢出问题 谢谢

游子 2008-06-04 11:41:03
Text2.Text = Mid(Text1.Text, 1, 1) * (16 * 16 * 16 * 16) + Mid(Text1.Text, 2, 1) * (16 * 16 * 16) + Mid(Text1.Text, 3, 1) * (16 * 16) + Mid(Text1.Text, 4, 1) * 16 + Mid(Text1.Text, 5, 1)
这个溢出 怎么解决??谢谢
...全文
75 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxrwan 2008-06-05
  • 打赏
  • 举报
回复
Text2.Text = Mid(Text1.Text, 1, 1) * (16&* 16 * 16 * 16) + Mid(Text1.Text, 2, 1) * (16& * 16 * 16) + Mid(Text1.Text, 3, 1) * (16& * 16) + Mid(Text1.Text, 4, 1) * 16 + Mid(Text1.Text, 5, 1)
用户 昵称 2008-06-04
  • 打赏
  • 举报
回复
Option Explicit

Private Sub Command1_Click()
Dim t As Currency

Dim s As String
Randomize Timer
s = CStr(CLng(Rnd * 10000000))

Debug.Print s

Dim i As Long
Dim l As Long
l = Len(s)
For i = 1 To l
t = t * 16
t = t + Val("&h" & Mid(s, i, 1))
Next i

Debug.Print t & " " & Hex$(t)

End Sub
游子 2008-06-04
  • 打赏
  • 举报
回复
不是 就是一个计算问题。
用户 昵称 2008-06-04
  • 打赏
  • 举报
回复
Text2.Text =
Mid(Text1.Text, 1, 1) * (16 * 16 * 16 * 16)
+ Mid(Text1.Text, 2, 1) * (16 * 16 * 16)
+ Mid(Text1.Text, 3, 1) * (16 * 16)
+ Mid(Text1.Text, 4, 1) * 16
+ Mid(Text1.Text, 5, 1)

这好像是一个十进制转16进制吧。可以用循环的。
m60a1 2008-06-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 CityBird 的回复:]
Text2.Text = Mid(Text1.Text, 1, 1) * (clng(16) * 16 * 16 * 16) + Mid(Text1.Text, 2, 1) * (16 * 16 * 16) + Mid(Text1.Text, 3, 1) * (16 * 16) + Mid(Text1.Text, 4, 1) * 16 + Mid(Text1.Text, 5, 1)

原因是VB把16当成一个Integer,16 * 16 * 16 * 16是4个Integer相乘,返回结果仍为Integer型,而16 * 16 * 16 * 16计算的结果为65536超过了Integer的范围,所以溢出。

(尿兜溢出,请使用屎兜! ^_^)
[/Quote]

正解,LZ把数字部份都用定义好的变量来代替,不要用数字,计算机有时候很笨的
三楼の郎 2008-06-04
  • 打赏
  • 举报
回复

Text2.Text = Mid(Text1.Text, 1, 1) * 16^4 + Mid(Text1.Text, 2, 1) * 16^3 + Mid(Text1.Text, 3, 1) * 16^2 + Mid(Text1.Text, 4, 1) * 16^1 + Mid(Text1.Text, 5, 1)
三楼の郎 2008-06-04
  • 打赏
  • 举报
回复
Text2.Text = Mid(Text1.Text, 1, 1) * (clng(16) * 16 * 16 * 16) + Mid(Text1.Text, 2, 1) * (16 * 16 * 16) + Mid(Text1.Text, 3, 1) * (16 * 16) + Mid(Text1.Text, 4, 1) * 16 + Mid(Text1.Text, 5, 1)

原因是VB把16当成一个Integer,16 * 16 * 16 * 16是4个Integer相乘,返回结果仍为Integer型,而16 * 16 * 16 * 16计算的结果为65536超过了Integer的范围,所以溢出。

(尿兜溢出,请使用屎兜! ^_^)

7,786

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧