Exts.kt 1.9 KB

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