提问人:noor palasamudram 提问时间:12/28/2021 最后编辑:noor palasamudram 更新时间:1/21/2022 访问量:571
十进制到uint8_t数组
Decimal to uint8_t array
问:
uint8_t certificateSerialNumber[] = {0x02, 0x04, 0x24,0xA8,0x16,0x34};
十进制614995508(实际序列号)转换为十六进制 24A81634。
上面的 unit8 数组是序列号的 TLV(标签长度值)三元组的表示 其中 T 是 0X02,L 是 0X04,V 是十六进制字符串。
因此,我能够一次将十六进制字符串拆分为两个字符
如何将十六进制转换为TLV三元组格式,如上图所示unit8_t objective-c中的数组? 参考: https://learn.microsoft.com/en-us/windows/win32/seccertenroll/about-integer
答:
0赞
matt
1/21/2022
#1
所以我对小数有点惊讶,但无论如何:
let what: Decimal = 614995508
var num = (what as NSDecimalNumber).uint64Value
var arr = [UInt8]()
while num > 0 {
let rem = num % (16*16)
arr.append(UInt8(rem))
num = num / (16*16)
}
arr.append(UInt8(arr.count))
arr.append(2)
arr = arr.reversed()
arr.forEach {
print(String($0, radix: 16), terminator: " ")
}
结果:2 4 24 a8 16 34
评论
0赞
noor palasamudram
1/21/2022
我还有一个疑问,您提供的十六进制转换也会支持十六进制签名 2 的赞美吗?
0赞
matt
1/21/2022
请不要在评论中说“谢谢”。— 请不要引入无关紧要的问题。我已经回答了你提出的问题。如果您有其他问题,请按“提问”按钮并提出。
上一个:Obj C 中的编码
评论