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

10 進数の614995508 (実際のシリアル番号) は、16 進数の 24A81634に変換されます。

上記の unit8 配列は、T が 0X02、L が 0X04、V が 16 進数の文字列であるシリアル番号の TLV (タグ長値) トリプレットでの表現です。

だから私は一度に2文字で16進数の文字列を分割することができます

上記のように、objective-c の unit8_t 配列で 16 進数を TLV トリプレット形式に変換する方法を教えてください。参照: https://docs.microsoft.com/en-us/windows/win32/seccertenroll/about-integer

4

1 に答える 1

0

だから私はDecimalに少し驚いていますが、何でも:

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 に答える