Convert string/char to int c++ program

sample đã nóiNhưng đó chỉ dùng được cho một kí tựMình giải thích giùm luôn là do mã ascii kí tự ‘0’ thì biểu diễn số là 48Ví dụ như bạn cóchar a=‘4’;int n = a - ‘0’;Thì khi đó nó sẽ chuyển định dạng kí tự về định dạng số theo mã ascii. Ký tự 4 thì mã là 52 trừ cho ký tự 0 mã là 48 ra được giá trị là 4.

Bạn đang xem: Convert string/char to int c++ program


Nếu áp dụng cho bài toán chuỗi nhiều kí tự như ‘123’. Bạn hãy lấy từng phần từ từ đầu chuỗi tới cuỗi chuỗi, chuyển lần lượt về kiểu int. Mỗi lần lấy được một ký tự bạn lại thêm vào giá trị kết quảVí dụ:n là giá trị ký tự vừa lấyres là kết quả sau khi chuyển qua số, ban đầu gán bằng 0Mỗi lần lấy ra được một ký tự bạn lại cộng thêm vào biến res theo công thứcres = res*10 + n


Do bạn lấy theo thứ tự chuỗi từ đầu đến cuốiVí dụ như có chuỗi a=‘123’Lần đầu lấy ra ký tự đầu tiên đổi về int là 1res = res*10 + n = 0*10 + 1 = 1Lần hai lấy ra ký tự tiếp theo là 2res = res*10 + n = 1*10 + 2 = 12Lần ba lấy ra ký tự tiếp theo là 3res = res*10 + n = 12*10 + 3 = 123Thì khi trả về kết quả sẽ ra là 123


Nó in ra sai bạn ơi, xem hộ mình sai chỗ nào nhỉ?

#include #include using namespace std; int chuyenKieu(char *s) {int res = 0;for(int i = 0; i

*
Nhat_Pham1:
res = res*10 + s;

chỗ này bạn phải để làres = res*10 + (s-‘0’)Do s lúc này là kiểu char nên nếu tính toán thì nó sẽ chuyển sang mã ascii nên kết quả ra không đúng


Cách đơn giản mà hiệu quả:Theo bảng mã ASCII, mỗi ký tự có một mã số, may mắn là "0 - ‘9’ liền nhau, vậy nên chúng ta có thể lấy mã của một ký tự số, trừ đi mã của ký tự ‘0’ sẽ ra được số đó. (Chỉ áp dụng cho số 1 chữ số).Mình thường dùng hàm này khai báo lên đầu chương trình:

inline int num(char x){ return x - "0";}Nếu muốn đổi chuỗi dài (dùng cho BigNum chẳng hạn) thì viết một hàm đổi đơn giản như sau:

int intValue(string s){ int res = 0; for(uint i=0;iGiải thích:Ví dụ có số: n = 12, cần thêm số 3 vào cuối để tạo thành số 123.Đầu tiên, bạn nhân 10 lên, sau đó cộng với 3:

12 x 10 + 3 = 123Mở rộng, nếu bạn muốn ghép 2 số tự nhiên lại, bạn nhân số đầu với một số lũy thừa của 10, với số mũ đúng bằng số chữ số của số thứ 2. Ví dụ:

123 x 1000 + 456 = 1234561234 x 100000 + 00056 = 12300056bla blaCode cho người lười:

#include inline int base10pow(int x){ return pow10(floor(log(x)/log(10)) +1 );}inline int numcat(int a, int b){ return a*base10pow(b) + b;}
Tuan_Anh2911 (Tuấn Anh) June 17, 2019, 9:15am #15
V làm sao để convert đc từ hệ hexa ra decimal dcc v ạ ? Vì hệ hexa nó ra tới A->F


noname00 (HK boy) June 17, 2019, 10:06am #16

Viết hàm chuyển tay nha bạn.

Xem thêm: Đăng Ký 3G Vina Sim Sinh Viên 50K 1 Tháng, 3G Vinaphone 4G Vinaphone Khuyến Mãi

0…9 -> 0…9, A -> 10, B -> 11,…


3 Likes
library (La biblioteca) split this topic January 29, 2021, 5:35am #17

A post was split to a new topic: Convert từ số sang xâu trong CYou should create a separated topic if your comment is not related to the original topic.


library (La biblioteca) closed January 29, 2021, 5:34am #18

Old inactive topic.


Home Categories FAQ/Guidelines Terms of Service Privacy Policy

Powered by Discourse, best viewed with JavaScript enabled