IHUdpTool.swift 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. //
  2. // IHUdpTool.swift
  3. // Inhealth
  4. //
  5. // Created by weclouds on 2020/8/25.
  6. // Copyright © 2020 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. //data转换成16字符串
  10. func dataConvertToHexString(data : Data) -> String {
  11. //十进制数组
  12. let bytes: [UInt8]? = [UInt8](data)
  13. var str : String = ""
  14. for byte in bytes! {
  15. //十进制转换成16进制字符串
  16. var s = String(byte,radix:16)
  17. if s.count == 1{
  18. s = "0" + s
  19. }
  20. str = str + s
  21. }
  22. return str
  23. }
  24. //16进制字符串转成10进制
  25. func hexStringConvertToDecimal(hexString : String) -> [UInt8] {
  26. let str = hexString as NSString
  27. let count = str.length / 2
  28. var arr = [UInt8]()
  29. for i in 0..<count {
  30. let subStr = str.substring(with: NSRange.init(location: i * 2, length: 2))
  31. let hex = hexStringToInt(from: subStr)
  32. arr.append(UInt8(hex))
  33. }
  34. return arr
  35. }
  36. //计算checksum - 字符串
  37. func checksum(command : String) -> String{
  38. let str = command as NSString
  39. let count = str.length / 2
  40. var sum = 0x0
  41. for i in 0..<count {
  42. let subStr = str.substring(with: NSRange.init(location: i * 2, length: 2))
  43. sum = sum + hexStringToInt(from: subStr)
  44. }
  45. //10进制转换成16进制 - 截取最后二位
  46. let hexStr = String(sum,radix:16) as NSString
  47. if hexStr.length > 1{
  48. return hexStr.substring(with: NSRange.init(location: hexStr.length - 2, length: 2))
  49. }else{
  50. return "0\(hexStr)"
  51. }
  52. }
  53. //16进制的字符串转换10进制
  54. func hexStringToInt(from:String) -> Int {
  55. let str = from.uppercased()
  56. var sum = 0
  57. for i in str.utf8 {
  58. sum = sum * 16 + Int(i) - 48 // 0-9 从48开始
  59. if i >= 65 { // A-Z 从65开始,但有初始值10,所以应该是减去55
  60. sum -= 7
  61. }
  62. }
  63. return sum
  64. }
  65. //10进制数据转换成16进制字符串,并拼接
  66. func deciConvertHexStr(deciArr : [UInt8]) -> String {
  67. var hexTotalStr = ""
  68. for deci in deciArr{
  69. var hexStr = String(deci,radix: 16)
  70. if hexStr.count == 1{
  71. hexStr = "0\(hexStr)"
  72. }
  73. hexTotalStr = hexTotalStr + hexStr
  74. }
  75. return hexTotalStr
  76. }