VB6 实现从字节到具体数据类型的转换
来源:互联网 发布:office软件验收 编辑:程序博客网 时间:2024/06/05 07:15
对于单片机软件工程师在设计上下位机通讯时,经常会遇到这样一个问题,那就是如何传递一个float或者说是double或者是long 类型的数据,这些数据是由多个字节组成的,那么符合实现发送和在vb6中接收,以及将数据还原是个问题。
事实上在C/C++中要实现很简单,只要通过指针和字节访问即可!
下面来看一个使用Turbo C 2.0做的例子:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
void main()
{
float fa,fb;
unsigned char *pa,*pb;
fa=3.14;
fb=0;
pa=&fa;
pb=&fb;
pb[0]=pa[0];
pb[1]=pa[1];
pb[2]=pa[2];
pb[3]=pa[3];
clrscr();
printf("0x%x,0x%x,0x%x,0x%x=%f",pa[0],pa[1],pa[2],pa[3],fb);
getch();
}
到此我们知道一个数据类新是如何在C中实现字节操作的,相信大家也应该知道怎么把一个float从串口中发送出去了吧,那么下面的工作就是如何在VB6中将收到的4个字节数据进行还原咯!
前面我们已经知道一个float类型的数据,当其值为3.14的时候,其值在内存中占据4个字节,其内容用十六进制表示为0xC3,0xF5,0x48,0x40
在vb中的代码实现如下:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) '内存拷贝
Private Declare Function VarPtr Lib "MSVBVM60.dll" (var As Any) As Long'指针操作
Private Sub Form_Load()
Dim f As Single
Dim b(4) As Byte
b(0) = &HC3
b(1) = &HF5
b(2) = &H48
b(3) = &H40
CopyMemory ByVal VarPtr(f), b(0), 1 '类似于C中的指针操作,将数据填充到其对应的字节位置中
CopyMemory ByVal VarPtr(f) + 1, b(1), 1
CopyMemory ByVal VarPtr(f) + 2, b(2), 1
CopyMemory ByVal VarPtr(f) + 3, b(3), 1
MsgBox f
End Sub
到此,相信大家应该可以很容易实现任意数据类型的传递以及在上位机中准确显示了!
- VB6 实现从字节到具体数据类型的转换
- 不允许从数据类型varchar到数据类型money的隐性转换
- 从一种数据类型到另一种数据类型的转换
- 浅议VB6字节数组和字符串的相互转换
- 浅议VB6字节数组和字符串的相互转换
- VB6字节数组和字符串的相互转换(转)
- C++从char*到LPCWSTR的数据类型转换问题
- 从RDB到RDF的转换实现
- 从RDB到RDF的转换实现
- 从RDB到RDF的转换实现
- vb6的数据类型
- VB6中实现浮点数各个字节的提取
- 【Java学习笔记】25:转换流(从字节流到字符流的转换)
- 字节数组与基础数据类型的转换
- 常用数据类型与字节数组的转换!
- 从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界的解决方法
- 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值。
- 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值
- yuv和yCbCr的差异
- [无线] AndroidManifest.xml配置文件详解
- 横向技术分析C#、C++和Java优劣
- Linux下j2ee开发环境的搭建
- 图论中最小生成树算法-Prim(普里姆)算法、kruskal(克鲁斯卡尔避圈法)算法、破圈算法
- VB6 实现从字节到具体数据类型的转换
- 【转】内核移植之vivi分区问题
- Step-by-Step SqlAlchemy Tutorial (part 2 of 2)
- sharepoint 列表中文件(文件夹)的基本操作
- ASP.NET 3.5高级编程 第二章
- UVa 424 - Integer Inquiry
- 一些machine learning的网站总结
- SWT固定窗口大小
- GCC 编译安装在线文档