小数到uint8_t数组
Decimal to uint8_t array
uint8_t certificateSerialNumber[] = {0x02, 0x04, 0x24,0xA8,0x16,0x34};
十进制614995508(实际序列号)转为十六进制24A81634.
上面的unit8数组是序列号在TLV(tag length value)三元组上的表示
其中 T 为 0X02,L 为 0X04,V 为十六进制字符串。
所以我可以一次将十六进制字符串拆分为两个字符
如何将 objective-c 中的 unit8_t 数组中的十六进制转换为 TLV 三元组格式?
参考:https://docs.microsoft.com/en-us/windows/win32/seccertenroll/about-integer
所以我对十进制有点惊讶,但无论如何:
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([=10=], radix: 16), terminator: " ")
}
结果:2 4 24 a8 16 34
uint8_t certificateSerialNumber[] = {0x02, 0x04, 0x24,0xA8,0x16,0x34};
十进制614995508(实际序列号)转为十六进制24A81634.
上面的unit8数组是序列号在TLV(tag length value)三元组上的表示 其中 T 为 0X02,L 为 0X04,V 为十六进制字符串。
所以我可以一次将十六进制字符串拆分为两个字符
如何将 objective-c 中的 unit8_t 数组中的十六进制转换为 TLV 三元组格式? 参考:https://docs.microsoft.com/en-us/windows/win32/seccertenroll/about-integer
所以我对十进制有点惊讶,但无论如何:
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([=10=], radix: 16), terminator: " ")
}
结果:2 4 24 a8 16 34