Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C#: Converting byte array to string and printing out to console

Tags:

c#

 public void parse_table(BinaryReader inFile) {     byte[] idstring = inFile.ReadBytes(6);     Console.WriteLine(Convert.ToString(idstring)); } 

It is a simple snippet: read the first 6 bytes of the file and convert that to a string.

However the console shows System.Byte[].

Maybe I'm using the wrong class for conversion. What should I be using? It will eventually be parsing filenames encoded in UTF-8, and I'm planning to use the same method to read all filenames.

like image 260
MxLDevs Avatar asked Jun 07 '12 22:06

MxLDevs


People also ask

Huruf c melambangkan apa?

Logo C merupakan sebuah lambang yang merujuk pada Copyright, yang berarti hak cipta.

C dalam Latin berapa?

C adalah huruf ketiga dalam alfabet Latin. Dalam bahasa Indonesia, huruf ini disebut ce (dibaca [tʃe]).

Bahasa C digunakan untuk apa?

Meskipun C dibuat untuk memprogram sistem dan jaringan komputer namun bahasa ini juga sering digunakan dalam mengembangkan software aplikasi. C juga banyak dipakai oleh berbagai jenis platform sistem operasi dan arsitektur komputer, bahkan terdapat beberepa compiler yang sangat populer telah tersedia.

Bahasa C dibuat pertama kali oleh siapa dan tahun berapa?

Bahasa pemrograman C ini dikembangkan antara tahun 1969 – 1972 oleh Dennis Ritchie. Yang kemudian dipakai untuk menulis ulang sistem operasi UNIX. Selain untuk mengembangkan UNIX, bahasa C juga dirilis sebagai bahasa pemrograman umum.


2 Answers

It's actually:

    Console.WriteLine(Encoding.Default.GetString(value)); 

or for UTF-8 specifically:

    Console.WriteLine(Encoding.UTF8.GetString(value)); 
like image 50
Tom Studee Avatar answered Sep 30 '22 00:09

Tom Studee


I was in a predicament where I had a signed byte array (sbyte[]) as input to a Test class and I wanted to replace it with a normal byte array (byte[]) for simplicity. I arrived here from a Google search but Tom's answer wasn't useful to me.

I wrote a helper method to print out the initializer of a given byte[]:

public void PrintByteArray(byte[] bytes) {     var sb = new StringBuilder("new byte[] { ");     foreach (var b in bytes)     {         sb.Append(b + ", ");     }     sb.Append("}");     Console.WriteLine(sb.ToString()); } 

You can use it like this:

var signedBytes = new sbyte[] { 1, 2, 3, -1, -2, -3, 127, -128, 0, }; var unsignedBytes = UnsignedBytesFromSignedBytes(signedBytes); PrintByteArray(unsignedBytes); // output: // new byte[] { 1, 2, 3, 255, 254, 253, 127, 128, 0, } 

The ouput is valid C# which can then just be copied into your code.

And just for completeness, here is the UnsignedBytesFromSignedBytes method:

// http://stackoverflow.com/a/829994/346561 public static byte[] UnsignedBytesFromSignedBytes(sbyte[] signed) {     var unsigned = new byte[signed.Length];     Buffer.BlockCopy(signed, 0, unsigned, 0, signed.Length);     return unsigned; } 
like image 30
Jesse Webb Avatar answered Sep 29 '22 23:09

Jesse Webb