在c#中将字节转换为二进制字符串

Ian*_*ian 42 c# string binary byte

在C#中,我转换bytebinary,实际的答案00111111,但报错结果111111.现在我真的需要在前面显示2 0.谁能告诉我怎么做?

我在用:

Convert.ToString(byteArray[20],2)
Run Code Online (Sandbox Code Playgroud)

字节值为63

Kel*_*sey 47

只需将您的代码更改为:

string yourByteString = Convert.ToString(byteArray[20], 2).PadLeft(8, '0');
// produces "00111111"
Run Code Online (Sandbox Code Playgroud)

  • @IanCian正确,无论什么总是有8位数,所以如果你全部提供它们,`PadLeft`将什么也不做,但如果你不这样做,它将在左边的空间填充0s. (3认同)

Sou*_*ver 20

如果我理解正确,你有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
Run Code Online (Sandbox Code Playgroud)

要将字节数组更改为单个字符串,请使用空格分隔字节:

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
Run Code Online (Sandbox Code Playgroud)

如果字节排序不正确,请使用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
Run Code Online (Sandbox Code Playgroud)