C#では、byte
をbinary
に変換していますが、実際の答えは00111111
しかし、与えられる結果は111111
。今、私は本当に前に2 0を表示する必要があります。誰もこれを行う方法を教えてもらえますか?
使っています:
Convert.ToString(byteArray[20],2)
バイト値は63
コードを次のように変更するだけです:
string yourByteString = Convert.ToString(byteArray[20], 2).PadLeft(8, '0');
// produces "00111111"
私が正しく理解していれば、変換したい20の値があるので、それはあなたが書いた帽子の単なる変更です。
シングルバイトを8文字の文字列に変更するには:Convert.ToString( x, 2 ).PadLeft( 8, '0' )
アレイ全体を変更するには:
byte[] a = new byte[] { 1, 10, 100, 255, 200, 20, 2 };
string[] b = a.Select( x => Convert.ToString( x, 2 ).PadLeft( 8, '0' ) ).ToArray();
// Returns array:
// 00000010
// 00010100
// 11001000
// 11111111
// 01100100
// 00001010
// 00000001
バイト配列を単一の文字列に変更するには、バイトをスペースで区切ります:
byte[] a = new byte[] { 1, 10, 100, 255, 200, 20, 2 };
string s = string.Join( " ",
a.Select( x => Convert.ToString( x, 2 ).PadLeft( 8, '0' ) ) );
// Returns: 00000001 00001010 01100100 11111111 11001000 00010100 00000010
バイトの順序が正しくない場合は、 IEnumerable.Reverse() を使用します。
byte[] a = new byte[] { 1, 10, 100, 255, 200, 20, 2 };
string s = string.Join( " ",
a.Reverse().Select( x => Convert.ToString( x, 2 ).PadLeft( 8, '0' ) ) );
// Returns: 00000010 00010100 11001000 11111111 01100100 00001010 00000001
これを試して
public static string ByteArrayToString(byte[] ba)
{
StringBuilder hex = new StringBuilder(ba.Length * 2);
foreach (byte b in ba)
hex.AppendFormat("{0:x2}", b);
return hex.ToString();
}
これを試してください:
public static String convert(byte b)
{
StringBuilder str = new StringBuilder(8);
int[] bl = new int[8];
for (int i = 0; i < bl.Length; i++)
{
bl[bl.Length - 1 - i] = ((b & (1 << i)) != 0) ? 1 : 0;
}
foreach ( int num in bl) str.Append(num);
return str.ToString();
}