Se Ho capito bene, hai 20 v alori che vuoi convertire, quindi è solo un semplice cambiamento di cappello che hai scritto.
Per cambiare singolo byte per stringa 8 char: Convert.ToString(x, 2).PadLeft(8, '0')
Per cambiare allineamento completo:
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
Per modificare la matrice di byte in un'unica stringa, con byte separati da spazi:
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
se l'ordine dei byte non è corretto utilizzare 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
simile, ma in senso inverso: http://stackoverflow.com/questions/72176/using-c-what-is-the-most-efficient-method-of- converting-a-string-containing-bi –