Содержимое Byte
Array
размера 4 следующее:
{1, 0, 0, 0}
. Это переводит к целому числу 1
в C # при использовании BitConverter.ToInt32(bytearray, 0);
Однако при преобразовании этого байтового массива в Integer
в Kotlin с использованием следующей базы кода я получаю значение 16777216
вместо значения 1
.
var test0 = BigInteger(bytearray).toInt() = 16777216
var test1 = BigInteger(bytearray).toFloat() = 1.6777216
или
fun toInt32(bytes: ByteArray, index: Int): Int
{
if (bytes.size != 4)
throw Exception("The length of the byte array must be at least 4 bytes long.")
return 0xff
and bytes[index].toInt() shl 56
or (0xff and bytes[index + 1].toInt() shl 48)
or (0xff and bytes[index + 2].toInt() shl 40)
or (0xff and bytes[index + 3].toInt() shl 32)
}
Я считаю, что оба метода преобразования верны, а байтовые значения не подписаны.