C# double float int string 与 byte数组 相互转化
2012-12-12 10:45
405 查看
在做通信编程的时候,数据发送多采用串行发送方法,实际处理的时候多是以字节为单位进行处理的。在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 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# double float int string 与 byte数组 相互转化
- C# double float int string 与 byte数组 相互转化
- C# double float int string 与 byte数组 相互转化
- 【C#】byte[]数组中有值大于127时与string之间的相互转化
- Android Int和byte数组,double和byte数组的相互转化
- short,int,long,double,string,float与byte数组之间的转换
- JAVA的数组 && 原始类型和引用类型以及String与int long相互转化 && String与byte[]相互转化
- C++: byte数组和int整数的相互转化
- Unity3D中的socket通信之八(字节数组与数据转换dll-byte int string float)
- C# 字符串string和内存流MemoryStream及比特数组byte[]之间相互转换
- Java中byte数组与short,int,char,long,float,double之间的转换
- string转int/float/double、int/float/double转string、转字符串数组的方法:stoi、stringstream、scanf、to_string、sprintf
- String,int,char,byte[]数组的相互转换
- byte数组与int数组相互转化
- C++11中int,float,double与string的转化
- c# 数组间转化 int[] string[] object[]
- String与int、long、float、double等相互转换
- VC 中 Cstring 与 int、float、double、char、string数据类型的相互转换
- CString string char * int double float 之间转化大全