-2
uint8_t certificateSerialNumber[] = {0x02, 0x04, 0x24,0xA8,0x16,0x34}; 

十进制614995508(实际序列号)转换为十六进制24A81634

上面的 unit8 数组是 TLV(标签长度值)三元组序列号的表示,其中 T 为 0X02,L 为 0X04,V 为十六进制字符串。

所以我可以一次将十六进制字符串分成两个字符

如何在objective-c中的unit8_t数组中将十六进制转换为TLV三元组格式?参考:https ://docs.microsoft.com/en-us/windows/win32/seccertenroll/about-integer

4

1 回答 1

0

所以我对小数有点惊讶,但无论如何:

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

于 2022-01-20T20:32:15.653 回答