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

标签 java arrays kotlin

我在将 Java 编写的函数转换为 Kotlin 特定函数时遇到问题。

这是用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

}

我猜它给出了错误的转换,而且“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;

最佳答案

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

assetData[oemMarkerIndex + 1].toInt()

关于java - 将使用字节的 java 函数转换为 Kotlin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47925781/

相关文章:

java - 解析 JSON 时如何替换 System.out.println 作为返回?

kotlin - 为什么每个线程都会多次初始化惰性变量

java - 在 Windows 上格式化 Fat32 USB 驱动器

java - Square Retrofit Client : How to enable/disable followRedirects? 如何拦截重定向URL?

java - wait.until(ExpectedConditions.visibilityOf(userName)) 不起作用

javascript - ParseFloat 数组值

java - 如何在 PostgreSQL Server 中查看表关系?

C - 将数组发送到函数而不声明它

android - 让 Jetpack Compose 中的每个单词都可以点击

markdown - Kotlin:文档使用哪种格式?