Exts.kt 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package com.iscs.bozzys.utils
  2. /**
  3. * 获取角色名称
  4. */
  5. fun List<String>.getRoleName(): String {
  6. val roles = Storage.readRoleList()
  7. return if (this.contains("super_admin")) {
  8. roles.find { it.code == "super_admin" }?.name ?: ""
  9. } else if (this.contains("jtdrawer")) {
  10. roles.find { it.code == "jtdrawer" }?.name ?: ""
  11. } else if (this.contains("jtlocker")) {
  12. roles.find { it.code == "jtlocker" }?.name ?: ""
  13. } else if (this.contains("jtcolocker")) {
  14. roles.find { it.code == "jtcolocker" }?.name ?: ""
  15. } else {
  16. ""
  17. }
  18. }
  19. /**
  20. * 是否管理员
  21. */
  22. fun List<String>?.isAdmin(): Boolean {
  23. if (this == null) return false
  24. return this.contains("super_admin")
  25. }
  26. /**
  27. * 将字节数组转换为16进制字符串
  28. */
  29. fun ByteArray.byteArrayToHexString(sep: String = ""): String {
  30. return joinToString(sep) { "%02X".format(it) }
  31. }
  32. /**
  33. * 16进制转自己数组
  34. */
  35. fun String.hexToByteArray(): ByteArray {
  36. return this.chunked(2)
  37. .map { it.toInt(16).toByte() }
  38. .toByteArray()
  39. }
  40. /**
  41. * 将Int转为ByteArray数组
  42. */
  43. fun Int.toByteArray(capability: Int = 2): ByteArray {
  44. val bytes = ByteArray(capability)
  45. for (i in 0 until capability) {
  46. // 大端模式
  47. // bytes[capability - i - 1] = ((this ushr (i * 8)) and 0xFF).toByte()
  48. // 小端模式
  49. bytes[i] = ((this ushr (i * 8)) and 0xFF).toByte()
  50. }
  51. return bytes
  52. }
  53. /**
  54. * CRC16 校验值
  55. * @return 两字节的校验值
  56. */
  57. fun ByteArray.crc16(from: Int = 0, to: Int = size) : ByteArray {
  58. val value = CRC16.crc16(this, from.coerceAtLeast(0), to.coerceAtMost(size))
  59. val c1 = (0xff00 and value shr 8).toByte()
  60. val c2 = (0xff and value).toByte()
  61. return byteArrayOf(c1, c2)
  62. }