I am trying to do some conversion in C#, and I am not sure how to do this:
private int byteArray2Int(byte[] bytes)
{
// bytes = new byte[] {0x01, 0x03, 0x04};
// how to convert this byte array to an int?
return BitConverter.ToInt32(bytes, 0); // is this correct?
// because if I have a bytes = new byte [] {0x32} => I got an exception
}
private string byteArray2String(byte[] bytes)
{
return System.Text.ASCIIEncoding.ASCII.GetString(bytes);
// but then I got a problem that if a byte is 0x00, it show 0x20
}
Could anyone give me some ideas?
Best Answer
BitConverter
is the correct approach.Your problem is because you only provided 8 bits when you promised 32. Try instead a valid 32-bit number in the array, such as
new byte[] { 0x32, 0, 0, 0 }
.If you want an arbitrary length array converted, you can implement this yourself:
It's not clear what the second part of your question (involving strings) is supposed to produce, but I guess you want hex digits?
BitConverter
can help with that too, as described in an earlier question.