सी

2011-03-16 22 views
12

में एसीआईआई चरित्र को एक int में परिवर्तित करने के लिए कैसे करें मैं एक एसीआई चरित्र को सी में int में कैसे परिवर्तित कर सकता हूं?सी

उत्तर

14

के बारे में क्या:

int a_as_int = (int)'a'; 
+9

वास्तव में 'एक' int सी सी के विपरीत में ++ पहले से ही है। – UmmaGumma

+2

मैं तर्क के लिए आवश्यक संदर्भ जोड़ूंगा: http://stackoverflow.com/questions/433895/why-are-c-character-literals-ints-instead-of-chars – xanatos

1

सी में एक चार मूल्य परोक्ष किसी पूर्णांक के लिए परिवर्तनीय है। उदाहरण के लिए, char c; ... printf("%d", c)c के दशमलव ASCII मान को प्रिंट करता है, और int i = c;c के ASCII पूर्णांक मान को i में रखता है। आप इसे (int)c के साथ स्पष्ट रूप से रूपांतरित भी कर सकते हैं। यदि आपका मतलब कुछ और है, जैसे एएससीआईआई अंक को एक int में कैसे परिवर्तित करना है, तो यह c - '0' होगा, जो किको int में परिवर्तित करता है और फिर '0' के ASCII मान को घटाता है, अर्थात् 48 (सी में, चरित्र स्थिरांक जैसे '0' ऐतिहासिक कारणों से टाइप int int, char नहीं हैं)।

9

आप इस के लिए खोज रहे हैं:

int c = some_ascii_character; 

या सिर्फ काम के बिना परिवर्तित:

(int)some_aschii_character; 
+0

मैं पहले व्यक्ति की तलाश में था लेकिन दूसरा एक साथ ही काम करता है। –

1

आप ASCII क्रमसूचक मूल्य मतलब है? इस तरह के प्रकार कास्टिंग का प्रयास करें:

int x = 'a'; 
+0

@ जेम बाल्टर क्षमा करें अगर यह स्पष्ट है लेकिन मैं सोच रहा था कि सी के विपरीत यह सी ++ कैसा है। क्या यह शब्दावली की वजह से है या क्या मुझे कुछ याद आ रहा है? – quasiverse

+0

@quasiverse संपादन को देखो - यानी, "43 मिनट पहले" लिंक पर क्लिक करें। ध्यान दें कि मेरी टिप्पणी 48 मिनट पहले पोस्ट की गई थी। सामान्य रूप से इससे सावधान रहें - यह आपको SO पर काट देगा। –

+0

ओह, मुझे मूर्खतापूर्ण, वे समय मैंने देखा जब मैंने इसे पोस्ट किया लेकिन निश्चित रूप से वे लोग नहीं पढ़ रहे थे जब लोग इसे पढ़ते समय देखेंगे। किसी भी यूटीएफ प्रारूप में –

1

के रूप में बाकी सब तुमसे कहा था, तो आप सीधे परिवर्तित कर सकते हैं ... जब तक आप की तरह "कोई न कोई मतलब है कि कैसे मैं अपने UTF-16 या UTF- को एक ASCII विस्तारित चरित्र में बदल सकते हैं 32 मान "। यह एक पूरी तरह से अलग सवाल है (कम से कम एक अच्छा)। और एक बहुत मुश्किल है, अगर मुझे सही याद है, तो आप केवल "शुद्ध" सी का उपयोग कर रहे हैं। फिर आप यहां शुरू कर सकते हैं: https://stackoverflow.com/questions/114611/what-is-the-best-unicode-library-for-c/114643#114643

(ASCII विस्तारित के लिए मेरा मतलब ASCII सेट में कई "एक्सटेंशन" में से एक है। आधार ASCII सेट के 0-127 वर्ण सीधे यूनिकोड में परिवर्तनीय हैं, जबकि 128-255 नहीं हैं।)। उदाहरण के लिए ISO_8859-1 http://en.wikipedia.org/wiki/ISO_8859-1 7 बिट ASCII सेट करने के लिए एक 8 बिट एक्सटेंशन, या (काफी प्रसिद्ध) codepages 437 और 850

+1

ASCII (0-127) वर्ण उनके पूर्णांक प्रतिनिधित्व के समान हैं। –

+0

@ क्रिस लेकिन कम से कम 50% बार, जब कोई एएससीआईआई की बात करता है तो उसका मतलब है "एएससीआईआई विस्तारित" ... लेकिन हां, यह नोट उत्तर में रखना दिलचस्प होगा। धन्यवाद। – xanatos

+0

ASCII वर्ण 0 से 127 के मान में हैं, इसलिए उन्हें यूटीएफ -16 या यूटीएफ -32 में परिवर्तित करना सिर्फ एक कलाकार है। शायद आप कुछ अलग हैं, जैसे कि यूटीएफ -8, आईएसओ 885 9 -1 आदि जैसे विभिन्न बाइट एन्कोडिंग को परिवर्तित करना –

3

मैं Ashot और Cwan करने के लिए सहमत है, लेकिन हो सकता है आप एक ascii-सिफर परिवर्तित करना है 7 की तरह एक int में '7' की तरह?

तब मैं recoomend:

char seven = '7'; 
int i = seven - '0'; 

या, हो सकता है आपको यह चेतावनी मिलती,

int i = (int) (seven - '0'); 

टिप्पणियों के बाद ठीक किया है, धन्यवाद।

+0

सी –

+0

में इसके लिए कोई चेतावनी नहीं है यदि कोई चेतावनी थी, तो आपको इसे पहली पंक्ति के लिए प्राप्त करने की अधिक संभावना होगी, जो एक बड़े प्रकार ('' 7'' एक int) को एक छोटे प्रकार (char) में परिवर्तित करता है)। –

0

सी 99 मानक लाइब्रेरी के साथ यह संभव नहीं है, जब तक कि आप चरित्र स्थिरांक से मैन्युअल रूप से संबंधित ASCII int मान तक कोई नक्शा नहीं लिखते।

सी में 'a' जैसे चरित्र स्थिरांक ASCII होने की गारंटी नहीं है।

सी 99 केवल उन स्थिरांकों के बारे में कुछ गारंटी देता है, उदा। वह digits be contiguous

शब्द ASCII केवल पाद लेख नोट में C99 N1256 standard draft पर दिखाई देता है, और पाद टिप्पणी 173) कहते हैं:

एक कार्यान्वयन सात-बिट अमेरिका ASCII वर्ण सेट का उपयोग करता है में, मुद्रण वर्ण उन जिसका हैं मूल्य 0x20 (अंतरिक्ष) से ​​0x7E (tilde) के माध्यम से हैं; नियंत्रण वर्ण वे हैं जिनके मान 0 (एनयूएल) से 0x1F (यूएस), और चरित्र 0x7F (DEL) से हैं।

जिसका अर्थ है कि ASCII केवल संभावना

1

उपयोग ASCII समारोह atoi() पूर्णांक नहीं है:

#include <stdlib.h> 

int num = atoi("23");