在VB中数据类型转换的问题---------在线等,急!!!!!

jinhailv 2005-11-09 09:10:33
我在做串口通讯程序时遇到了这样一个问题:在VB中我需要将一个浮点型数据(single)转换成一个四位字节的字符串后,送给下位才能实现通讯.
例如:需要将数据 1.11
转换成 (3F 8E 14 7B) 字符串的形式发给下位
另外,如何将下位传给我的字符串(3F 8E 14 7B)
转换成浮点数 1.11
请各位高手给看看,谢谢了!
...全文
153 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinhailv 2005-11-10
  • 打赏
  • 举报
回复
多谢指教,可以了!
zou19820704 2005-11-09
  • 打赏
  • 举报
回复
copymemory
如果是传过来的是一个double数据类型的话,你也可以使用copymemory
dim x as double

copymemory x,buff,8
rainstormmaster 2005-11-09
  • 打赏
  • 举报
回复
//在按下Command1_Click()时,提示:实时错误'453'找不到DLL入口点RtlMoveMemory in kernel32.

你什么系统?
另外,copymemory的函数声明你最好通过你的api浏览器添加
jinhailv 2005-11-09
  • 打赏
  • 举报
回复
请教rainstormmaster(暴风雨 v2.0),你所给出的程序在我的机器上运行出现了实时错误:
在按下Command1_Click()时,提示:实时错误'453'找不到DLL入口点RtlMoveMemory in kernel32.
在按下Command2_Click()时,提示:实时错误'6' 溢出
请问我还需要设置什么地方吗?
谢谢!!!
bbhere 2005-11-09
  • 打赏
  • 举报
回复
学习了
上官云峰 2005-11-09
  • 打赏
  • 举报
回复
我不明白,你是怎么转换的
如果是8、16进制怎么也得不到你所需要得啊
jinhailv 2005-11-09
  • 打赏
  • 举报
回复
多谢了
rainstormmaster 2005-11-09
  • 打赏
  • 举报
回复
用copymemory即可:
Option Explicit

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Sub Command1_Click()
Dim num As Single
num = 1.11
Dim buff(3) As Byte
CopyMemory buff(0), num, 4
Dim s As String
s = Hex(buff(3)) + " " + Hex(buff(2)) + " " + Hex(buff(1)) + " " + Hex(buff(0))
MsgBox s
End Sub

Private Sub Command2_Click()
Dim s As String
s = "3F 8E 14 7B"
Dim buff(3) As Byte
Dim a() As String
a = Split(s, " ")
Dim i As Long
For i = UBound(a) To 0 Step -1
buff(3 - i) = Val("&H" + a(i))
Next
Dim J As Single
CopyMemory J, buff(0), 4
MsgBox CStr(J)
End Sub

1,502

社区成员

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

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