javaで書かれた関数をKotlin固有に変換する際に問題があります。ここ バイトをKotlinに変換するjava関数を変換する
は、Javaで書かれている:private boolean isOldOemCommissioningFormat(byte[] assetData) {
if (assetData == null
|| assetData.length < mAssetDataDelimeterByteCount + mAssetDataOwnerIdByteCount + mAssetDataIdLeadingZerosByteCount + mAssetDataIdByteCount)
return false;
int oemMarkerIndex = mAssetDataDelimeterByteCount + mAssetDataIdLeadingZerosByteCount + mAssetDataIdByteCount;
if (assetData[oemMarkerIndex] == PARTIAL_OEM_MARKER || assetData[oemMarkerIndex] == FULL_OEM_MARKER)
return ((assetData[oemMarkerIndex + 1] >> 6) & 0x01) == 0;
return false;
}
をしかし、私はそれが私にこのを与えるのAndroid StudioのIDEコンバータを使用してKotlinに変換していたとき:
private fun isOldOemCommissioningFormat(assetData: ByteArray?): Boolean {
if (assetData == null || assetData.size < mAssetDataDelimeterByteCount + mAssetDataOwnerIdByteCount + mAssetDataIdLeadingZerosByteCount + mAssetDataIdByteCount)
return false
val oemMarkerIndex = mAssetDataDelimeterByteCount + mAssetDataIdLeadingZerosByteCount + mAssetDataIdByteCount
return if (assetData[oemMarkerIndex] == PARTIAL_OEM_MARKER || assetData[oemMarkerIndex] == FULL_OEM_MARKER) assetData[oemMarkerIndex + 1] shr 6 and 0x01 == 0 else false
}
それは私が推測間違っconvertionを与え、プラス'shr'は未解決の参照として赤でマークされます。
どのように正しく変換できますか?
他の変数は以下のとおりです。
public static final byte PARTIAL_OEM_MARKER = '#';
public static final byte FULL_OEM_MARKER = '&';
public static final int OEM_COMMISSIONING_CUSTOMER_ID_ENCODING_CHARACTERS_COUNT = 40;
public static final int OEM_COMMISSIONING_CUSTOMER_ID_ENCODING_FIRST_CHARACTER_INDEX = 64;
と
private final int mAssetDataIdLeadingZerosByteCount;
private final int mAssetDataIdByteCount;
private final int mAssetDataDelimeterByteCount;
private final int mAssetDataOwnerIdByteCount;