我需要将16383转换为7F7F,但我只能将其转换为3fff或77377。
我可以将8192转换为十六进制字符串4000,这基本上是相同的。
如果我使用build job
它以第三个数字的3fff十六进制停止,第二个数字停止为2000十六进制。这是我的代码
let firstHexa = String(format:"%02X", a)
请帮助女士们和先生们!感谢。
答案 0 :(得分:1)
从您的测试用例来看,您的值似乎是每字节7位。
您希望8192
转换为4000
。
您希望16383
转换为7F7F
。
请注意:
(0x7f << 7) + 0x7f == 16383
鉴于:
let a = UInt8((int16 >> 7) & 0x7f)
let b = UInt8(int16 & 0x7f)
let result = String(format: "%02X%02X", a , b)
这给出了:
"4000"
的{p> 8128
"7F7F"
的16383
要扭转这个过程:
let str = "7F7F"
let value = Int(str, radix: 16)!
let result = ((value >> 8) & 0x7f) << 7 + (value & 0x7f)
print(result) // 16383