I have this kind of code
static void Main(string[] args)
{
byte[] array = new byte[2] { 0x00, 0x1f };
Console.WriteLine(BitConverter.ToInt32(array, 0));
}
However it does not work. It throws an exception:
Destination array is not long enough to copy all the items in the collection. Check array index and length.
What is wrong?
To convert bytes to int in Python, use the int. from_bytes() method. A byte value can be interchanged to an int value using the int.
In C#.Net, we can create an unsigned byte array by using byte, byte is used to store only positive values between the range of 0 to 255 (Unsigned 8 bits integer). It occupies 1-byte memory for each element, if array size is 10, it will take 10 bytes memory.
ByteArray is an extremely powerful Class that can be used for many things related to data manipulation, including (but not limited to) saving game data online, encrypting data, compressing data, and converting a BitmapData object to a PNG or JPG file.
As the name suggests, an Int32 is 32 bits, or 4 bytes, so if you want to convert a byte array to an Int32, it needs to have a length of at least 4, (or more precisely, it needs to have least 4 bytes after the start position).
If all you have is two bytes, maybe you meant to use ToInt16?
An Int32 is composed of 4 bytes but the array only has 2. One way to work around this is to first convert to Int16 and then to Int32
Console.WriteLine((Int32)(BitConverter.ToInt16(array, 0)));
Note that in this specific usage converting to Int32 from Int16 doesn't change anything because the numbers print the same.
The documentation on BitConverter.ToInt32 says:
The ToInt32 method converts the bytes from index startIndex to startIndex + 3 to an Int32 value.
You need to specify at least 4 bytes, but you only have 2.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With