1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- //
- // IHUdpTool.swift
- // Inhealth
- //
- // Created by weclouds on 2020/8/25.
- // Copyright © 2020 weclouds. All rights reserved.
- //
- import UIKit
- //data转换成16字符串
- func dataConvertToHexString(data : Data) -> String {
- //十进制数组
- let bytes: [UInt8]? = [UInt8](data)
- var str : String = ""
- for byte in bytes! {
- //十进制转换成16进制字符串
- var s = String(byte,radix:16)
- if s.count == 1{
- s = "0" + s
- }
- str = str + s
- }
- return str
- }
- //16进制字符串转成10进制
- func hexStringConvertToDecimal(hexString : String) -> [UInt8] {
- let str = hexString as NSString
- let count = str.length / 2
- var arr = [UInt8]()
- for i in 0..<count {
- let subStr = str.substring(with: NSRange.init(location: i * 2, length: 2))
-
- let hex = hexStringToInt(from: subStr)
- arr.append(UInt8(hex))
- }
- return arr
- }
- //计算checksum - 字符串
- func checksum(command : String) -> String{
- let str = command as NSString
- let count = str.length / 2
- var sum = 0x0
- for i in 0..<count {
- let subStr = str.substring(with: NSRange.init(location: i * 2, length: 2))
- sum = sum + hexStringToInt(from: subStr)
- }
- //10进制转换成16进制 - 截取最后二位
- let hexStr = String(sum,radix:16) as NSString
- if hexStr.length > 1{
- return hexStr.substring(with: NSRange.init(location: hexStr.length - 2, length: 2))
- }else{
- return "0\(hexStr)"
- }
-
- }
- //16进制的字符串转换10进制
- func hexStringToInt(from:String) -> Int {
- let str = from.uppercased()
- var sum = 0
- for i in str.utf8 {
- sum = sum * 16 + Int(i) - 48 // 0-9 从48开始
- if i >= 65 { // A-Z 从65开始,但有初始值10,所以应该是减去55
- sum -= 7
- }
- }
- return sum
- }
- //10进制数据转换成16进制字符串,并拼接
- func deciConvertHexStr(deciArr : [UInt8]) -> String {
- var hexTotalStr = ""
- for deci in deciArr{
- var hexStr = String(deci,radix: 16)
- if hexStr.count == 1{
- hexStr = "0\(hexStr)"
- }
- hexTotalStr = hexTotalStr + hexStr
- }
- return hexTotalStr
- }
|