C# Byte

22618 ワード

Byte


を選択します.
範囲
サイズ
.NETタイプ
Byte
0~255
符号なしの8ビット整数
System.Byte
Byteは、値範囲が0(Byte.MinValue定数で示す)から255(Byte.MaxValue定数で示す)の符号なし整数を表す可変値タイプである.NET Frameworkには、-128から127までの範囲の値を表す記号付き8ビット整数値タイプも含まれています.byteタイプの範囲をバイナリに変換するのは00000000~11111です.byteタイプは占有スペースが小さく、1バイト、int型は占有スペースが大きく、4バイトです.データ量が小さい場合、違いは見えません.データ量が大きい場合、例えば60億人の年齢は、0~255の間に違いなく、intを使うと多くの空間が浪費されます.

Byte[]


1.C#Byte[]string変換

  • C#stringタイプからbyte[]:
  • Byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str );
    
  • C#byte[]string:
  • stringstr = System.Text.Encoding.Default.GetString ( byteArray );
    
  • C#stringタイプからASCIIbyte[]:
  • (「01」からbyte[]=newbyte[]{0 x 30,0 x 31})
    byte[] byteArray = System.Text.Encoding.ASCII.GetBytes ( str );
    
  • C#ASCIIbyte[]string:
  • (byte[]=new byte[]{0 x 30,0 x 31}を「01」に変換)
    string str = System.Text.Encoding.ASCII.GetString ( byteArray );
    
  • C#byte[]16進フォーマットstring:
  • new byte[]{0 x 30,0 x 31}を「3031」に変換:
    public static string ToHexString ( byte[] bytes ) // 0xae00cf => "AE00CF "
    
    {
    
    string hexString = string.Empty;
    
    if ( bytes != null )
    
    {               
    
    StringBuilder strB = new StringBuilder ();
    
    for ( int i = 0; i < bytes.Length; i++ )
    
    {                   
    
    strB.Append ( bytes[i].ToString ( "X2" ) );               
    
    }               
    
    hexString = strB.ToString ();           
    
    }return hexString;       
    
    }
    

    2.C#一般的なバイト配列byte[]切り取り


    C#byte[]配列切り取り:
    byte[] data= new byte[]{1,2,3,4,5,6,7,8,9};
    
    BitConverter.ToInt16(data,3)//  2 ,3 
    
    BitConverter.ToInt32(data,3); // 4 
    
    BitConverter.ToInt64(data,3);// 8 
    
    切り取り数が不規則な場合:
    data.Skip(5).Take(3).ToArray()// 
    data.Skip(4).ToArray();                // 
    

    3.C#byte[]配列コピー


    (1)
    byte[] data = new byte[]{0,1,2,3,4,5,6,7,8,9};
    
    byte[] data1 = new byte[data.length];
    
    for(int i=0;i<data1.length;i++){
    data1[i] = data[i];
    }
    
    (2)すべてコピー
    byte[] data = new byte[]{0,1,2,3,4,5,6,7,8,9};
    
    byte[] data1 = new byte[data.length];
    
    Array.Copy(data,data1,data.length);// data, data1, data.length
    
    (3)すべてコピー
    byte[] data = new byte[]{0,1,2,3,4,5,6,7,8,9};
    
    byte[] data1;
    
    data1 = (byte[])data .Clone();
    
    (4)深度コピー
    byte[] srcArray = new byte[] { 0x01, 0x02, 0x03, 0x04 };
    
    byte[] dstArray = new byte[srcArray.Length];
    
    // srcArray ,  0, dstArray , 0,  srcArray.Length
    Buffer.BlockCopy(srcArray, 0, dstArray, 0, srcArray.Length);
    
    

    4.C#byte[]配列削除

    byte[] data = new byte[]{0,1,2,3,4,5,6,7,8,9};
    
    (1)指定された位置数のデータを削除する
    Array.Clear(data,0,5); //data  0,  5 
    
    (2)指定したデータを削除–byte[]に戻るスペースの削減
    ///
    
    ///  byte[]  byte
    
    ///
    
    ///  byte[]
    
    /// byte[]   byte ( : byte cut = 0x00 ;)
    
    ///
    
    public static byte[] ByteCut(byte[] b, byte cut)
    
    {
    
    var list = new List();
    
    list.AddRange(b);
    
    for (var i = list.Count - 1; i >= 0; i--)
    
    {
    
    if (list[i] == cut)
    
    list.RemoveAt(i);
    
    }
    
    var lastbyte = new byte[list.Count];
    
    for (var i = 0; i < list.Count; i++)
    
    {
    
    lastbyte[i] = list[i];
    
    }
    
    return lastbyte;
    
    }
    
    (3)クリアbyte[]
    byte[] data = new byte[50];
    
    data = new byte[50];// new