Dalam pengaturcaraan, anda sering menghadapi situasi di mana rentetan digit perlu ditukar kepada integer individu. Walaupun mengakses setiap aksara mengikut indeks adalah mudah, menukar aksara tersebut kepada integer mungkin kelihatan mencabar.
Fungsi atoi() yang popular memerlukan hujah rentetan, yang membawa kepada idea untuk menukar setiap aksara kepada rentetan dan kemudian menggunakan atoi (). Walau bagaimanapun, terdapat pendekatan yang lebih langsung dan cekap.
Kuncinya ialah mengenali bahawa pengekodan aksara untuk digit adalah berurutan. Dalam ASCII, UTF-x dan kebanyakan sistem pengekodan lain, '0' mempunyai pengekodan 48, manakala '9' mempunyai pengekodan 57.
Memanfaatkan ini, anda boleh mengekstrak nilai integer digit dengan menolak aksara daripada '0' atau 48. Contohnya:
char c = '1'; int i = c - '0'; // i is now equal to 1, not '1'
Ini bersamaan kepada:
char c = '1'; int i = c - 48; // i is now equal to 1, not '1'
Walaupun kedua-dua ungkapan menghasilkan hasil yang sama, pilihan pertama (c - '0') biasanya dianggap lebih mudah dibaca.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Digit Tunggal daripada Rentetan kepada Integer dalam C/C dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!