C# double float int string 与 byte数组 相互转化
在做通信编程的时候,数据发送多采用串行发送方法,实际处理的时候多是以字节为单位进行处理的。在C/C++中 多字节变量与Byte进行转化时候比较方便 采用UNION即可
废话少说看示例:
typedef union
{
double data_df;
byte data_b[8];
}DoubleYByte;
本示例实现了double与byte的相互转化
typedef union
{
float data_f;
byte data_b;
}FloatYByte;
本示例实现了float与byte的相互转化
其他的数据类型short int long等都可以采用上述示例转换 在C/C++中可以很容易的实现
但是在上位机编程中,采用C#编程就比较麻烦,因为没有union可用
但是C#提供一个类system.BitConverter来专门解决这种转换问题,该类如下显示
方法
DoubleToInt64Bits 将指定的双精度浮点数转换为 64 位有符号整数。
GetBytes 已重载。 将指定的数据转换为字节数组。
Int64BitsToDouble 将指定的 64 位有符号整数转换成双精度浮点数。
ToBoolean 返回由字节数组中指定位置的一个字节转换来的布尔值。
ToChar 返回由字节数组中指定位置的两个字节转换来的 Unicode 字符。
ToDouble 返回由字节数组中指定位置的八个字节转换来的双精度浮点数。
ToInt16 返回由字节数组中指定位置的两个字节转换来的 16 位有符号整数。
ToInt32 返回由字节数组中指定位置的四个字节转换来的 32 位有符号整数。
ToInt64 返回由字节数组中指定位置的八个字节转换来的 64 位有符号整数。
ToSingle 返回由字节数组中指定位置的四个字节转换来的单精度浮点数。
ToString 已重载。 将指定的字节数组的每个元素的数值转换为它的等效十六进制字符串表示形式。
ToUInt16 返回由字节数组中指定位置的两个字节转换来的 16 位无符号整数。
ToUInt32 返回由字节数组中指定位置的四个字节转换来的 32 位无符号整数。
ToUInt64 返回由字节数组中指定位置的八个字节转换来的 64 位无符号整数。
若想把float类型转化为byte示例如下:
float a=1.23;
byte[] b=BitConverter.GetBytes(a);
若想把变量b重新转化为float类型可以使用toSingle方法,示例如下:
float c=BitConverter.ToSingle(b,0);//应为a在b中其实字节为0,故第二个参数为0
还有就是string与byte[]的变换 如果知道就很简单
byte[] byteArray = System.Text.Encoding.Default.GetBytes( str );
string str = System.Text.Encoding.Default.GetString( byteArray );
在System.Text.Encoding class中,还有很多其它有用的方法,像GetChars,从一个byte[]转成一个char[],等等,还有其它编码方式的,如 System.Text.UTF8Encoding class、System.Text.UnicodeEncoding class等,根据不同需要可选不同的class。 具体请参考MSDN
C# double float int string 与 byte数组 相互转化的更多相关文章
- c# string 和 byte[]数组之间转换
在文件流读取和存储过程当中,经常涉及到byte[]数组形式存储数据,再此过程中也涉及到String类型字符串和byte[]的类型转换,下面我们举例说明一下. 现在有一个字符串: string str ...
- C++ char float int string 之间的转换
string str = "123"; string 转 int int i = atoi( str.c_str() ); string 转 float float f = ato ...
- C# String与Byte数组的转换
string转byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes(str); byte[] byteArray = Enc ...
- 对象与Byte数组相互转化工具方法
/** * 对象转byte * @param obj * @return */ private byte[] ObjectToByte(Object obj) { byte[] bytes = nul ...
- byte数组和int之间相互转化的方法
Java中byte数组和int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送者接收的数据都是byte数组,但是int类型是4个byte组成的,如何把一个整形in ...
- 【转】java中byte数组与int类型的转换(两种方式)----不错
原文网址:http://blog.csdn.net/piaojun_pj/article/details/5903009 java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法, ...
- byte[]数组和int之间的转换
这里简单记录下两种转换方式: 第一种: 1.int与byte[]之间的转换(类似的byte short,long型) /** * 将int数值转换为占四个字节的byte数组,本方法适用于(低位在前,高 ...
- Go语言网络通信---string与int互转,int64与[]byte互转,int直接互转,string与[]byte互转
string与int互转 #string到int int,err:=strconv.Atoi(string) #string到int64 int64, err := strconv.ParseInt( ...
- java基本数据类型转换成byte[]数组
import java.io.UnsupportedEncodingException; public class ConToByte { /** * double转换byte ...
随机推荐
- Object.defineProperty vs __defineGetter__ vs normal
Testing in Chrome 31.0.1650.63 32-bit on Windows Server 2008 R2 / 7 64-bit Test Ops/sec Object.defin ...
- 编写程序,查找并删除forward_list<int>中的奇数元素
#include<iostream> #include<forward_list> using namespace std; int main() { forward_list ...
- 火狐HACK
/*针对Firefox*/@-moz-document url-prefix() { #nav{ width:200px; }}
- 如何定位到div滚动条的最底端
function ScrollDiv() { var ex = document.getElementById("calm"); ex.scrollTop = ex.scrollH ...
- java_包含抽象方法的枚举类
package ming; enum Operation { PLUS { public double eval(double x, double y) { return x + y; } }, MI ...
- 深入研究Block捕获外部变量和__block实现原理
Blocks是C语言的扩充功能,而Apple 在OS X Snow Leopard 和 iOS 4中引入了这个新功能“Blocks”.从那开始,Block就出现在iOS和Mac系统各个API中,并被大 ...
- jsp 用application对象制作留言板
<%@ page contentType="text/html; charset=gb2312"%> <html> <body> <for ...
- 关于SpringMVC和Struts2的区别
1. 与struts2不同 1. springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过虑器. 2. springmvc是基于方法开发,传递参数是通 ...
- [记录] web icon 字体
weloveiconfonts 在http://codepen.io/cguillou/pen/jmkfK 中看css发现既然有这样的,yes!
- 读jQuery官方文档:样式
样式 使用jQuery,无论是设置或者获取元素样式都十分简便. // 支持驼峰式和分割线式,两种方式等价(原生JavaScript只支持驼峰式) $('h1').css('fontSize'); $( ...