Penjelasan %02.2hhx
dalam jawaban suara tinggi :
%
: Memperkenalkan x
specifier konversi.
02
: Lebar minimum dari nilai yang dikonversi adalah 2. Jika nilai yang dikonversi memiliki byte lebih sedikit dari lebar bidang, itu harus diisi dengan 0
di sebelah kiri.
.2
: Memberikan jumlah digit minimum yang muncul untuk x
specifier konversi.
hh
: Menentukan bahwa x
specifier konversi berlaku untuk char yang ditandatangani atau argumen char yang tidak ditandatangani (argumen akan dipromosikan sesuai dengan promosi integer, tetapi nilainya akan dikonversi menjadi char yang ditandatangani atau char yang tidak ditandatangani sebelum dicetak).
x
: Argumen unsigned akan dikonversi ke format heksadesimal unsigned dalam gaya "dddd"; huruf "abcdef" digunakan. Presisi menentukan jumlah minimum digit yang akan ditampilkan; jika nilai yang dikonversi dapat direpresentasikan dalam digit yang lebih sedikit, itu harus diperluas dengan nol di depan. Ketepatan standar adalah 1. Hasil konversi nol dengan ketepatan eksplisit nol tidak boleh berupa karakter.
Untuk lebih jelasnya, lihat spesifikasi IEEE printf .
Berdasarkan penjelasan di atas, saya pikir lebih baik untuk perubahan %02.2hhx
ke%02x
atau %.2x
.
Untuk Swift 5, metode berikut ini semuanya layak:
deviceToken.map({String(format: "%02x", $0)}).joined()
deviceToken.map({String(format: "%.2x", $0)}).joined()
deviceToken.reduce("", {$0 + String(format: "%02x", $1)})
deviceToken.reduce("", {$0 + String(format: "%.2x", $1)})
Tesnya adalah sebagai berikut:
let deviceToken = (0..<32).reduce(Data(), {$0 + [$1]})
print(deviceToken.reduce("", {$0 + String(format: "%.2x", $1)}))
// Print content:
// 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
NSLog
, yang dicetaknewDeviceToken
?