Converting C# code in JAVA / datatype problem
In c# byte range is 0 to 255 and in JAVA -128 to 127.
Now I have C# byte array as {15, 0, 0, 128, 16, 39, 240, 216, 241, 255, 127}.
now First take
C# scenario, they have two methods....
1. BitConverter.ToInt16(byteArray, index); // In C# Int16 is short range: -32768 to 32767
This method consider two bytes from index positions and convert them to short(Int16).
e.g. byteArray = {15, 0, 0, 128, 16, 39, 240, 216, 241, 255, 127} and index = 6.
then two bytes will be 240, 216. By using this two bytes it creates one short(Int16) which is -10000.
2. BitConverter.ToInt32(byteArray, index); // In C# Int32 is int range: -2147483648 to 2147483647
This method consider four bytes from index positions and convert them to int(Int32).
e.g. byteArray = {15, 0, 0, 128, 16, 39, 240, 216, 241, 255, 127} and index = 6.
then four bytes will be 240, 216, 241, 255. By using this four bytes it creates one int(Int32) which is -927504.
Now In JAVA
As java byte range is -128 to 127 we have to use short array to store same data.
i took {15, 0, 0, 128, 16, 39, 240, 216, 241, 255, 127} as short Array.
converted it to byteArray = {0, 15, 0, 0, 0, 0, 0, -128, 0, 16, 0, 39, 0, -16, 0, -40, 0, -15, 0, -1, 0, 127}
1. to get short (range: -32768 to 32767)
i took index = 6*2 = 12
so the byte i have to consider are 0, -16, 0, -40.
and have to make one short from it but these are 4 bytes, How can i make short from it!!! so i took resulting number as int which is of 4 byte length.
Now problem is int range in java is -2147483648 to 2147483647, so while making the number from those byte array its not giving same result as C#
2. to get int (range: -2147483648 to 2147483647)
i took index = 6*2 = 12
so the byte i have to consider are 0, -16, 0, -40, 0, -15, 0, -1.
and have to make one int from it but these are 8 bytes, How can i make int from it? same problem above now for int, so i consider resulting number as long.
Same now, the java long range (-9223372036854775808 to +9223372036854775807) is different than C# int range(-2147483648 to 2147483647).
So the resulting number getting from byte array is not same as the C# output.
I used,
like wise i have tried in different way... also succeed in getting short, int and long number but the values, i.e. my output is not same as C#
Please help me some suggestions, i'm totally stuck!!!