Saya ingin tahu cara mengurai string hex, mewakili angka, di Objective-C. Saya bersedia menggunakan metode objektif, atau metode berbasis C, baik-baik saja.
contoh:
#01FFFFAB
harus mengurai menjadi integer: 33554347
Bantuan apa pun akan dihargai!
0x
(atau0X
). NSScanner akan menerima prefiks tersebut.Anda dapat menggunakan NSScanner untuk ini
outVal
akan berisi int yang Anda cari. 0x adalah opsional.sumber
strtol () adalah teman Anda.
Ini mengubah string menjadi panjang, dan Anda dapat meneruskan basis nomor tersebut. Hapus tanda # terlebih dahulu, atau berikan penunjuk ke karakter numerik pertama ke strtol.
sumber
strtol
fungsi juga lebih banyak ringan. Tulis pengujian unit secara menyeluruh (termasuk spasi, karakter non-hex, dll ..) karena Anda akan menemukan beberapa kasus tepi yang mengejutkan yangNSScanner
memberi Anda lebih banyak kendali.Anda dapat menggunakan baris di bawah ini untuk konversi. Ini hanya kode satu baris:
Selamat Coding !!!
sumber
0x
(atau0X
) atau +/- atau karakter lain yang tidak dianggap valid dalam masukan Anda.Pustaka standar Swift 4 memperkenalkan penginisialisasi baru untuk mengurai semua jenis bilangan bulat. Dibutuhkan string untuk mengurai dengan radix (yaitu base) dan mengembalikan integer opsional:
sumber
Menurut apel:
jadi, jika Anda memiliki
NSData
keberatan, Anda dapat melakukan selanjutnyasumber
0x
(atau0X
) atau karakter lain yang tidak dianggap valid dalam masukan Anda, tetapi diterima oleh NSScanner.Untuk Swift 3:
sumber