2013-04-14 109 views
6

Tôi muốn chuyển đổi một char thành giá trị int ASCII của nó.Làm thế nào để chuyển đổi một ASCII char thành giá trị int ASCII của nó?

Tôi có thể điền vào một mảng với tất cả các giá trị có thể và so sánh với giá trị đó, nhưng dường như không đúng với tôi. Tôi muốn một cái gì đó giống như

char mychar = "k" 
public int ASCItranslate(char c) 
return c 

ASCItranslate(k) // >> Should return 107 as that is the ASCII value of 'k'. 

Điểm này là atoi() sẽ không hoạt động ở đây vì nó chỉ dành cho số có thể đọc được.

Nó sẽ không làm bất cứ điều gì với không gian (ASCII 32).

+0

Bạn thử có gì không? Ví dụ như, 'return c;'? –

+1

'char mychar =" k "': Trời ơi, bạn đã thử cái này chưa? '" k "' là một chuỗi được kết thúc bằng null, không phải là một 'char'. Ngoài ra, các câu lệnh 'C++' phải kết thúc bằng dấu chấm phẩy. Chắc chắn bạn biết điều này? – TonyK

Trả lời

2

Làm điều này: -

char mychar = 'k'; 
public int ASCItranslate(char c) 
return int(c); 

ASCItranslate(k); // >> should return 107 as that is the ascii value of k 
+0

Sẽ không hoạt động trên các máy sử dụng [EBCDIC] (http://en.wikipedia.org/wiki/EBCDIC). Nếu tính di động được mong muốn, điều gì đó phức tạp hơn là bắt buộc. –

+1

EBCDIC không phải là ASCI, EBCDIC cũ hơn chỉ được IBM sử dụng trong các hệ thống trước đó của chúng. tôi nhớ ngay cả MSX có ASCI vì vậy điều này phải được thực sự cũ, tôi sử dụng nó trên một Arduino mà hiểu nó. – user613326

+0

Tại sao điều này lại được tán thành/chấp nhận? Nó thậm chí không phải là mã hợp lệ. –

7

Chỉ cần làm điều này:

int(k) 

Bạn chỉ cần chuyển đổi char đến một int trực tiếp ở đây, không cần cho một cuộc gọi chức năng.

5

A char đã là một số. Nó không yêu cầu bất kỳ chuyển đổi nào kể từ khi ASCII chỉ là ánh xạ từ các số sang biểu diễn ký tự.

Bạn có thể sử dụng nó trực tiếp dưới dạng số nếu bạn muốn hoặc bỏ nó.

0

Trong C++, bạn cũng có thể sử dụng static_cast<int>(k) để chuyển đổi rõ ràng.

+1

Truyền luôn rõ ràng. Sử dụng dàn diễn viên sẽ thực hiện chuyển đổi ** rõ ràng. Tất nhiên, trong hầu hết các trường hợp, trình biên dịch sẽ thực hiện chuyển đổi, và dàn diễn viên chỉ là tiếng ồn. –

+0

Tôi có nghĩa là "rõ ràng với lập trình viên", không phải trình biên dịch. – Tisys

+0

Tuy nhiên, đó là ** chuyển đổi ** được thực hiện rõ ràng. Một ** cast ** là một cái gì đó bạn viết trong mã nguồn của bạn để cho trình biên dịch thực hiện một chuyển đổi; phôi là ** luôn ** rõ ràng. –

0
#include <iostream> 

char mychar = 'k'; 
int ASCIItranslate(char ch) { 
    return ch; 
} 

int main() { 
    std::cout << ASCIItranslage(mychar); 
    return 0; 
} 

Đó là mã ban đầu của bạn với các lỗi cú pháp khác nhau cố định. Giả sử bạn đang sử dụng một trình biên dịch sử dụng ASCII (mà là khá nhiều mỗi một ngày này), nó hoạt động. Tại sao bạn nghĩ nó sai?

0

để chuyển đổi từ một nhân vật ASCII để nó ASCII giá trị:

char c='A'; 
    cout<<int(c); 

để chuyển đổi từ một giá trị gia tăng ASCII để nó ASCII Character:

int a=67; 
    cout<<char(a); 
Các vấn đề liên quan