关于4byte和float转换的问题.

lwy7758 2011-03-10 03:28:01
一个4维Byte()怎么和float互转呢?

VB:

Dim value as Long
Dim valueF as Single

value = &HC2C7FAE1
memcpy valueF, value, 4
debug.print valueF

这样好像可以byte转float, 要怎么从float转为byte呢?
...全文
301 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
memcpy是VC用法,VB用API CopyMemory

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

然后
CopyMemory varptr(float变量),4字节的byte()数组,4

BYTE()数组直接就是地址了
  • 打赏
  • 举报
回复
memcpy是VC用法,VB用API CopyMemory

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

然后
CopyMemory varptr(float变量),varptr(4字节的byte()数组),4
lyserver 2011-03-10
  • 打赏
  • 举报
回复
使用varptr+MemoryCopy
zdingyun 2011-03-10
  • 打赏
  • 举报
回复
lwy7758 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dbcontrols 的回复:]

CByte函数可以直接转换
[/Quote]


Dim MyDouble, MyByte

MyDouble = 3.488 ' MyDouble 为Double(双精度)。
MyByte = CByte(MyDouble) ' MyByte 值为 3

MyDouble = 3.588
MyByte = CByte(MyDouble) ' MyByte 值为 4

如果是这样的话, CByte好像不是我想要的.

比如, valueByte = &H3F6ED158
转换为Float后, 我想得到valueFloat = 0.9328818321

或者valueFloat = 0.9328818321
转换为Byte后, 我想得到valueByte = &H3F6ED158
dbcontrols 2011-03-10
  • 打赏
  • 举报
回复
CByte函数可以直接转换
dbcontrols 2011-03-10
  • 打赏
  • 举报
回复
value是个保留字,不要用做变量名称

7,763

社区成员

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

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