Thuật Toán đổi Kiểu Chuỗi (char) Sang Kiểu Số (int) Trong C++? Trang chủ » Chuyển Từ Xâu Sang Số Trong C++ » Thuật Toán đổi Kiểu Chuỗi (char) Sang Kiểu Số (int) Trong C++? Có thể bạn quan tâm Chuyển Từ Xâu Sang Số Trong Pascal Chuyển Từ Xlsx Sang Pdf Chuyển Từ Xml Sang Excel Online Chuyển Từ Xps Sang Pdf Chuyển Từ Xps Sang Word Thuật toán đổi kiểu chuỗi (char) sang kiểu số (int) trong C++? programming c++ Nhat_Pham1 (Minh Vương) June 17, 2019, 10:05am #1 Như tiêu đề, mình muốn biết thuật toán chuyển kiểu như thế nào mà không dùng hàm atoi? Chuyển kiểu dữ liệu từ số nguyên sang chuỗi và ngược lại sample (<script>alert("hacked")</script>) November 16, 2015, 5:55am #2 Dùng bảng ASCII để giải bài này bạn nhé int chuyen( char c) { return (int)c-48; } 2 Likes hiepbp (Bùi Phú Hiệp) November 16, 2015, 6:07am #3 Kiểu chuỗi thì là string chứ he, còn char là kiểu kí tự mà Nhat_Pham1 (Minh Vương) November 16, 2015, 6:13am #4 Chắc là chuỗi ký tự đó anh Nhat_Pham1 (Minh Vương) November 16, 2015, 6:14am #5 Giải thích cho mình rõ tí đi bạn hiepbp (Bùi Phú Hiệp) November 16, 2015, 6:18am #6 Nếu vậy bạn có thể dùng kiểu như bạn @sample đã nói Như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à 48 Ví 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. 1 Like hiepbp (Bùi Phú Hiệp) November 16, 2015, 6:20am #7 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ấy res là kết quả sau khi chuyển qua số, ban đầu gán bằng 0 Mỗ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ức res = res*10 + n Nhat_Pham1 (Minh Vương) November 16, 2015, 11:37am #8 res*10 la ntn v ban? hiepbp (Bùi Phú Hiệp) June 17, 2019, 10:05am #9 Do bạn lấy theo thứ tự chuỗi từ đầu đến cuối Ví dụ như có chuỗi a=‘123’ Lần đầu lấy ra ký tự đầu tiên đổi về int là 1 res = res*10 + n = 0*10 + 1 = 1 Lần hai lấy ra ký tự tiếp theo là 2 res = res*10 + n = 1*10 + 2 = 12 Lần ba lấy ra ký tự tiếp theo là 3 res = res*10 + n = 12*10 + 3 = 123 Thì khi trả về kết quả sẽ ra là 123 Nhat_Pham1 (Minh Vương) June 17, 2019, 10:06am #10 Nó in ra sai bạn ơi, xem hộ mình sai chỗ nào nhỉ? #include <iostream> #include <cstring> using namespace std; int chuyenKieu(char *s) { int res = 0; for(int i = 0; i < strlen(s); i++ ) { res = res*10 + s[i]; } return res; } main() { char *s = new char[30]; cout << "Nhap chuoi s[]: "; cin.getline(s,29); cout << "Chuoi sau khi chuyen: " << chuyenKieu(s); } 1 Like hiepbp (Bùi Phú Hiệp) November 16, 2015, 12:25pm #11 Nhat_Pham1: res = res*10 + s[i]; chỗ này bạn phải để là res = res*10 + (s[i]-‘0’) Do s[i] 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 2 Likes Nhat_Pham1 (Minh Vương) November 16, 2015, 12:29pm #12 thanks bạn rất nhìu, để topic này đây có gì thảo luận với bạn tiếp hihi Van_Phu (Văn Phú) November 19, 2017, 3:44am #13 cảm ơn anh Bùi Phú Hiệp anh ơi cho em kb fb với anh đi Duong_Thai_Minh (Dương Thái Minh) November 20, 2017, 5:21am #14 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;i<s.size();i++) res = res*10 + num(s[i]); return res; } Giả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 = 123 Mở 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 = 123456 1234 x 100000 + 00056 = 12300056 bla bla Code cho người lười: #include <math.h> 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. 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 C You 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. DayNhauHoc's Discord Học C++ Free? Click Blog Dạy Nhau Học Tự Học Lập Trình 83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao? Từ khóa » Chuyển Từ Xâu Sang Số Trong C++ Chuyển Chuỗi Thành Số Trong C++ (atoi,atof,atol) Cách Chuyển Kiểu String Sang Int Trong C/C++ - Lập Trình Không Khó Chuyển Int Sang String Trong C++ Làm Thế Nào Tôi Có Thể Chuyển đổi Một Chuỗi Std :: Sang Int? - HelpEx Bài Tập C++ - Chuyển đổi Chuỗi Thành Số Nguyên Trong C++ - VietTuts Hàm Chuyển đổi Trực Tiếp Từ String Sang Int - Cộng đồng C Việt Một Số Cách Convert Number Sang String Trong C++ | CppDeveloper Ép Kiểu Trong C++ - Techacademy Xâu Trong C++ - VNOI Làm Thế Nào để Chuyển Kiểu Dữ Liệu Int Sang String Trong C++? Hàm Chuyển đổi Chữ Thành Số Và Số Thành Chữ Trong C\C++ - DevPro [Lập Trình C++ Cơ Bản] Bài 8: Xâu Kí Tự (Phần 1) - Viblo Xử Lý Số Nguyên Lớn (phần 1) - Viblo Phương Pháp ép Kiểu Dữ Liệu Trong C++