C# BitConverter类用法介绍和示例

2021年5月10日16:05:47 发表评论 1,587 次浏览

BitConverter类的用途是将基本数据类型转换为字节数组, 并将字节数组转换为基本数据类型。该类的定义如下系统命名空间。此类提供了不同类型的方法来执行转换。基本上, 一个字节定义为8位无符号整数。此类有助于以基本形式(一系列字节)操纵值类型。这是在静态方法的帮助下完成的。 BitConverter类的静态方法用于将每个基本类型与字节数组之间进行转换。

属性:

  • IsLittleEndian:这表示在此计算机体系结构中存储数据的字节顺序("字节序")。

方法

方法 描述
DoubleToInt64Bits(Double) 将指定的双精度浮点数转换为64位带符号整数。
GetBytes() 将指定的数据转换为字节数组。
Int32BitsToSingle() 将指定的32位带符号整数转换为单精度浮点数。
Int64BitsToDouble(Int64) 将指定的64位带符号整数转换为双精度浮点数。
SingleToInt32Bits() 将指定的单精度浮点数转换为32位带符号整数。
ToBoolean(Byte [], Int32) 返回从字节数组中指定位置的字节转换而来的布尔值。
ToChar(Byte [], Int32) 返回从字节数组中指定位置的两个字节转换而来的Unicode字符。
ToDouble(Byte [], Int32) 返回一个双精度浮点数, 该数字从字节数组中指定位置的八个字节转换而来。
ToInt16(Byte [], Int32) 返回一个16位带符号整数, 该整数从字节数组中指定位置的两个字节转换而来。
ToInt32(Byte [], Int32) 返回一个32位带符号整数, 该整数从字节数组中指定位置的四个字节转换而来。
ToInt64(Byte [], Int32) 返回一个64位带符号整数, 该整数从字节数组中指定位置的8个字节转换而来。
ToSingle(Byte [], Int32) 返回一个单精度浮点数, 该数字由字节数组中指定位置的四个字节转换而成。
ToString() 将指定字节数组的每个元素的数值转换为其等效的十六进制字符串表示形式。
ToUInt16(Byte [], Int32) 返回一个16位无符号整数, 该整数从字节数组中指定位置的两个字节转换而来。
ToUInt32(Byte [], Int32) 返回一个32位无符号整数, 该整数从字节数组中指定位置的四个字节转换而来。
ToUInt64(Byte [], Int32) 返回一个64位无符号整数, 该整数从字节数组中指定位置的八个字节转换而来。

示例1:

//C# program to illustrate the
//use of GetBytes(Int64) method
using System;
  
class GFG {
  
     //Main method
     static public void Main()
     {
  
         //Creating and initializing an array
         long [] ele = {0, long .MaxValue, long .MinValue, 1000000000000000, -100000000, 0xDDDDDDDDD, -0xAAAAAAAAAAAA };
  
         //Display the elements
         Console.WriteLine( "Elements are:" );
         foreach ( long i in ele)
         {
             Console.WriteLine(i);
         }
  
         foreach ( var num in ele)
         {
  
             //Get the specified 64-bit signed
             //integer value as an array of bytes.
             //using GetBytes(Int64) method
             byte [] BArr = BitConverter.GetBytes(num);
  
             //Display the elements
             Console.WriteLine( "Element: {0}" , BitConverter.ToString(BArr));
         }
     }
}

输出如下:

Elements are:
0
9223372036854775807
-9223372036854775808
1000000000000000
-100000000
59556879837
-187649984473770
Element: 00-00-00-00-00-00-00-00
Element: FF-FF-FF-FF-FF-FF-FF-7F
Element: 00-00-00-00-00-00-00-80
Element: 00-80-C6-A4-7E-8D-03-00
Element: 00-1F-0A-FA-FF-FF-FF-FF
Element: DD-DD-DD-DD-0D-00-00-00
Element: 56-55-55-55-55-55-FF-FF

示例2:

//C# program to illustrate the
//use of Int64BitsToDouble(Int64)
//method
using System;
  
class GFG {
  
     //Main method
     static public void Main()
     {
  
         long ele = 0xFFFFFFFFFFFFFFF;
  
         //Converts the given 64-bit signed
         //integer to a double-precision 
         //floating point number using the 
         //Int64BitsToDouble(Int64) method
         double R = BitConverter.Int64BitsToDouble(ele);
  
         //Display the element
         Console.WriteLine( "Converted Element is : {0}" , R);
     }
}

输出如下:

Converted Element is : 1.28822975391943E-231

参考:

  • https://docs.microsoft.com/en-us/dotnet/api/system.bitconverter?view=netframework-4.7.2

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: