float型数据与字节数组的转化
字节(float)浮点数为例。
一、C语言
转化常见的方法有:
1、强制指针类型转换。
- //转换float数据到字节数组
- unsigned char i;
- float floatVariable;
- unsigned char charArray[4];
- (unsigned char) *pdata = ((unsigned char)*)&floatVariable; //把float类型的指针强制转换为unsigned char型
- for(i=0;i<4;i++)
- {
- charArray[i] = *pdata++;//把相应地址中的数据保存到unsigned char数组中
- }
- //转换字节数组到float数据
- float floatVariable;
- unsigned char i;
- void *pf;
- pf = &floatVariable;
- (unsigned char) * px = charArray;
- for(i=0;i<4;i++)
- {
- *(((unsigned char)*)pf+i)=*(px+i);
- }
、使用结构和联合
- //定义结构和联合
- typedef union
- {
- struct
- {
- unsigned char low_byte;
- unsigned char mlow_byte;
- unsigned char mhigh_byte;
- unsigned char high_byte;
- }float_byte;
- float value;
- }FLAOT_UNION;
这样可以在程序中直接对各数据赋值,然后获取数据。如对float_byte中的各字节赋值,可以直接从value中获取float型数据,反之亦然。
注意,从上面的转换可以看到,对于定义的数组unsignedchar charArray[4],一般charArray[0]代表低字节,charArray[3]代表高字节。
二、c#
在c#中可以使用BitConverter类中的函数进行转换,如下:
名称 |
说明 |
以字节数组的形式返回指定的双精度浮点值。 |
|
以字节数组的形式返回指定的单精度浮点值。 |
|
返回由字节数组中指定位置的八个字节转换来的双精度浮点数。 |
|
返回由字节数组中指定位置的四个字节转换来的单精度浮点数。 |
BitConverter类进行基础数据类型与字节数组之间的相互转换,此类便于操作基本形式的类型。一个字节定义为一个 8位无符号整数。包含的方法如下:
名称 |
说明 |
将指定的双精度浮点数转换为 64 位有符号整数。 |
|
以字节数组的形式返回指定的布尔值。 |
|
以字节数组的形式返回指定的 Unicode 字符值。 |
|
以字节数组的形式返回指定的双精度浮点值。 |
|
以字节数组的形式返回指定的 16 位有符号整数值。 |
|
以字节数组的形式返回指定的 32 位有符号整数值。 |
|
以字节数组的形式返回指定的 64 位有符号整数值。 |
|
以字节数组的形式返回指定的单精度浮点值。 |
|
以字节数组的形式返回指定的 16 位无符号整数值。 |
|
以字节数组的形式返回指定的 32 位无符号整数值。 |
|
以字节数组的形式返回指定的 64 位无符号整数值。 |
|
将指定的 64 位有符号整数转换成双精度浮点数。 |
|
返回由字节数组中指定位置的一个字节转换来的布尔值。 |
|
返回由字节数组中指定位置的两个字节转换来的 Unicode 字符。 |
|
返回由字节数组中指定位置的八个字节转换来的双精度浮点数。 |
|
返回由字节数组中指定位置的两个字节转换来的 16 位有符号整数。 |
|
返回由字节数组中指定位置的四个字节转换来的 32 位有符号整数。 |
|
返回由字节数组中指定位置的八个字节转换来的 64 位有符号整数。 |
|
返回由字节数组中指定位置的四个字节转换来的单精度浮点数。 |
|
将指定的字节数组的每个元素的数值转换为它的等效十六进制字符串表示形式。 |
|
将指定的字节子数组的每个元素的数值转换为它的等效十六进制字符串表示形式。 |
|
将指定的字节子数组的每个元素的数值转换为它的等效十六进制字符串表示形式。 |
|
返回由字节数组中指定位置的两个字节转换来的 16 位无符号整数。 |
|
返回由字节数组中指定位置的四个字节转换来的 32 位无符号整数。 |
|
返回由字节数组中指定位置的八个字节转换来的 64 位无符号整数。 |
- <p><span style="font-size:18px"></span></p>
最新文章
- [javascript|基本概念|Number
- android嵌套unity3d
- zigbee学习之路(六):Time3(查询方式)
- ajax异步请求Response.Redirect重定向
- ubuntu 搭建 samba 服务器
- Android基础总结(12)——XML和JSON解析
- 移动端折腾国外分享(facebook、twitter、linkedin)
- 查看MySQL数据库的默认编码
- Codeforces Round #350 (Div. 2)A,B,C,D1
- 【SSM之旅】Spring+SpringMVC+MyBatis+Bootstrap整合基础篇(一)项目简介及技术选型相关介绍
- menu
- 千万不要随意在网上下载ojdbcjar包来使用,ORA-01461错误解决
- github的markdown页内锚点以及本地资源链接
- python 装饰器--对有无参数的函数进行装饰
- 一些Android手机的平台信息
- java.lang.NoClassDefFoundError 错误
- 使用AsyncTask类实现简单的异步处理操作
- 《Linux内核分析》实践2
- (转)C#读写共享文件
- Unity3D动态加载外部MovieTexture视频
热门文章
- RabbitMQ Consumer获取消息的两种方式(poll,subscribe)解析
- maven setting仓库镜像
- s​h​e​l​l​中​条​件​判​断​i​f​中​的​-​z​到​-​d​
- How to Fix “ShellExecute failed (2): Is this command correct?” on Notepad++
- 重新认识HBase,Cassandra列存储——本质是还是行存储,只是可以动态改变列(每行对应的数据字段)数量而已,当心不是parquet
- ActionDescriptor 的认识
- python基础之字符编码(一)
- java中常用的帮助类。加快开发速度
- int 21h 汇编
- poscms仿站知识点总结(一)