Помогите, пожалуйста переписать код на java в swift или подскажите аналоги библиотек )
Вот код:
public static BitSet getBitSet(byte[] array, int fromByteIndex, int fromByteBitIndex, int bitsCount) {
//эти методы используется и в других проектах!!!
BitSet arrayBitSet = BitSet.valueOf(array);
int fromIndex = fromByteIndex * 8 + fromByteBitIndex;
return arrayBitSet.get(fromIndex, fromIndex + bitsCount);
}
public static Double canConvert(long data, int startByte, int startBit, int countBit, double factor, double offset, ByteOrder byteOrder) {
//эти методы используется и в других проектах!!!
byte[] array = longToBytes(data, byteOrder);
startBit--; //уменьшаем на 1 т.к. индекс начинается с 0
startByte--;//уменьшаем на 1 т.к. индекс начинается с 0
int size = (int) Math.ceil((startBit + countBit) / 8d);
BitSet result = getBitSet(array, startByte, startBit, countBit);
array = Arrays.copyOf(result.toByteArray(), size);
size = array.length;
ByteBuffer b = ByteBuffer.allocate(size).order(byteOrder);
b.put(array);
b.position(0);
Double res = null;
if (size == 1) {
res = (b.get() & 0xff) * factor + offset;
Log.d(LOG_TAG, "RESULT get " + String.valueOf(res));
} else if (size == 2) {
res = (b.getShort() & 0xffff) * factor + offset;
Log.d(LOG_TAG, "RESULT getShort" + String.valueOf(res));
} else if (size == 3) {
//доработать
int sp = threeByteToInt(b);
res = sp * factor + offset;
Log.d(LOG_TAG, "RESULT get 3byte " + String.valueOf(res));
} else if (size == 4) {
res = (b.getInt() & 0xffffffffL) * factor + offset;
Log.d(LOG_TAG, "RESULT getInt " + String.valueOf(res));
} else if (size == 8) {
res = b.getLong() * factor + offset;
Log.d(LOG_TAG, "RESULT getLong " + String.valueOf(res));
}
return res;
}
пример: ример : мне нужно с инта конвертировать в массив байтов, взять 3ий байт и взять с 3 по 16 бит, а потом уже проводить операции с полученным числом. Спасибо)