将使用字节的java函数转换为Kotlin

我有一个用Java编写的函数转换为Kotlin特定的问题。

这里用Java编写:

private boolean isOldOemCommissioningFormat(byte[] assetData) { if (assetData == null || assetData.length > 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 } 

它给我错误的转换我猜,再加上“红色”被标记为红色未解决的参考。

我怎样才能正确地转换它?

其他variables是:

  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; 

在仅适用于Int和Long的Kotlin“shr”中,尝试转换您的值

 assetData[oemMarkerIndex + 1].toInt() 

assetData[oemMarkerIndex + 1]字节转换为IntassetData[oemMarkerIndex + 1].toInt()