C# double float int string 与 byte数组 相互转化
来源:互联网 发布:2016年网络发展趋势 编辑:程序博客网 时间:2024/05/16 10:47
在做通信编程的时候,数据发送多采用串行发送方法,实际处理的时候多是以字节为单位进行处理的。在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
废话少说看示例:
typedef union
{
double data_df;
byte
}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
GetBytes
Int64BitsToDouble
ToBoolean
ToChar
ToDouble
ToInt16
ToInt32
ToInt64
ToSingle
ToString
ToUInt16
ToUInt32
ToUInt64
若想把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[]的变换 如果知道就很简单
在System.Text.Encoding class中,还有很多其它有用的方法,像GetChars,从一个byte[]转成一个char[],等等,还有其它编码方式的,如 System.Text.UTF8Encoding class、System.Text.UnicodeEncoding class等,根据不同需要可选不同的class。 具体请参考MSDN
- C# double float int string 与 byte数组 相互转化
- C# double float int string 与 byte数组 相互转化
- C# double float int string 与 byte数组 相互转化
- C# double float int string 与 byte数组 相互转化
- byte数组与int数组相互转化
- short,int,long,double,string,float与byte数组之间的转换
- JAVA的数组 && 原始类型和引用类型以及String与int long相互转化 && String与byte[]相互转化
- String与int、long、float、double等相互转换
- C++11中int,float,double与string的转化
- Android Int和byte数组,double和byte数组的相互转化
- QString string int double char* 相互转化
- int、char、double与byte相互转换
- int、char、double与byte相互转换
- int、char、double与byte相互转换
- Int[]数组与List的相互转化,String[]数组与List的相互转化
- Java中byte数组与short,int,char,long,float,double之间的转换
- Java中byte数组与short,int,char,long,float,double之间的转换
- VC 中 Cstring 与 int、float、double、char、string数据类型的相互转换
- 设计模式之工厂模式、抽象工厂模式、单例模式(C++代码)
- Eclipse文字设置
- SO_REUSEADDR的作用
- Android中内容观察者的使用---- ContentObserver类详解
- QoS保障的不同的方面
- C# double float int string 与 byte数组 相互转化
- 如何利用cab包实现控件的自动升级
- Python编程之socket使用详解
- 1212工作小记
- iphone多线程编程
- 正则表达式 浅学
- sizeof详解
- PHP分页显示制作详细讲解
- Event Kit使用说明