जावास्क्रिप्ट में ASCII कोड में चरित्र परिवर्तित करें


952

मैं जावास्क्रिप्ट का उपयोग करके किसी वर्ण को उसके ASCII कोड में कैसे बदल सकता हूं?

उदाहरण के लिए:

"\ n" से 10 प्राप्त करें।


10
कृपया ध्यान दें कि अधिकांश उत्तरों में सुझाई गई String.prototype.charCodeAt () विधि UTF-16 कोड यूनिट (ऐतिहासिक कारणों से पूर्ण उचित UTF-16 एन्कोडिंग भी नहीं ) लौटेगी । केवल पहले 128 यूनिकोड कोड बिंदु ASCII वर्ण एन्कोडिंग का सीधा मेल हैं।
एल्वारो गोंजालेज

जवाबों:


1448
"\n".charCodeAt(0);

658
इसके विपरीत है String.fromCharCode(10)
viam0Zah

184
मजेदार तथ्य: आपको वास्तव में 0(पहले तर्क मूल्य) की आवश्यकता नहीं है - बस कर "\n".charCodeAt()देंगे।
मथियास ब्यनेंस

47
@MathiasBynens: और सौभाग्य से यह प्रलेखित है: developer.mozilla.org/en/JavaScript/Reference/Global_Objects/… । "अगर यह एक संख्या नहीं है, तो यह 0 पर डिफॉल्ट करता है"
टोक़

12
आप का कहना चाहिए कि विपरीत String.fromCharCode( asciiNumVal ), stringInstance.charCodeAt( index )है वर्ग स्ट्रिंग की एक स्थिर विधि
bobobobo

26
@ मैथियास ब्यनेंस, यह निश्चित रूप से शून्य पर डिफ़ॉल्ट करता है, लेकिन मैं सिर्फ प्रदर्शन पर ब्याज परीक्षण से बाहर भाग गया और यह 0. jsperf.com/default-to-0-vs-0/4 ** का उपयोग करते हुए तुलनात्मक रूप से बहुत खराब प्रदर्शन करता है। इसका केवल एक सापेक्ष अंतर है, या तो इसका बहुत जल्दी तरीका है।
वेड मॉन्टैग

385

String.prototype.charCodeAt()स्ट्रिंग वर्णों को ASCII संख्या में बदल सकते हैं। उदाहरण के लिए:

"ABC".charCodeAt(0) // returns 65

विपरीत उपयोग के लिए String.fromCharCode(10)जो संख्या को ASCII वर्ण के बराबर में परिवर्तित करते हैं । यह फ़ंक्शन कई नंबरों को स्वीकार कर सकता है और सभी वर्णों को जोड़ सकता है और फिर स्ट्रिंग लौटा सकता है। उदाहरण:

String.fromCharCode(65,66,67); // returns 'ABC'

यहाँ एक त्वरित ASCII वर्ण संदर्भ है:

{
"31": "",      "32": " ",     "33": "!",     "34": "\"",    "35": "#",    
"36": "$",     "37": "%",     "38": "&",     "39": "'",     "40": "(",    
"41": ")",     "42": "*",     "43": "+",     "44": ",",     "45": "-",    
"46": ".",     "47": "/",     "48": "0",     "49": "1",     "50": "2",    
"51": "3",     "52": "4",     "53": "5",     "54": "6",     "55": "7",    
"56": "8",     "57": "9",     "58": ":",     "59": ";",     "60": "<",    
"61": "=",     "62": ">",     "63": "?",     "64": "@",     "65": "A",    
"66": "B",     "67": "C",     "68": "D",     "69": "E",     "70": "F",    
"71": "G",     "72": "H",     "73": "I",     "74": "J",     "75": "K",    
"76": "L",     "77": "M",     "78": "N",     "79": "O",     "80": "P",    
"81": "Q",     "82": "R",     "83": "S",     "84": "T",     "85": "U",    
"86": "V",     "87": "W",     "88": "X",     "89": "Y",     "90": "Z",    
"91": "[",     "92": "\\",    "93": "]",     "94": "^",     "95": "_",    
"96": "`",     "97": "a",     "98": "b",     "99": "c",     "100": "d",    
"101": "e",    "102": "f",    "103": "g",    "104": "h",    "105": "i",    
"106": "j",    "107": "k",    "108": "l",    "109": "m",    "110": "n",    
"111": "o",    "112": "p",    "113": "q",    "114": "r",    "115": "s",    
"116": "t",    "117": "u",    "118": "v",    "119": "w",    "120": "x",    
"121": "y",    "122": "z",    "123": "{",    "124": "|",    "125": "}",    
"126": "~",    "127": ""
}

30
बेहतर एएससीआई संदर्भ: en.wikipedia.org/wiki/ASCII - मुझे उस पृष्ठ पर टेबलों के लिए किए गए रंग पर बहुत गर्व है, लगभग 10 वर्षों के बाद भी वहाँ है
बीटी

9
@theGrayFox C:\> man asciiदेता हैBad command or file name
e2-E4

ध्यान दें कि ये विधियाँ UTF-16 संगत हैं, जिसका अर्थ इनपुट स्ट्रिंग के आधार पर, charCodeAt 1 बाइट ASCII मानों को 0-127 तक बढ़ा सकता है। मान लें कि यह उस सीमा में है यदि मनमाना स्ट्रिंग इनपुट स्वीकार किया जा रहा है और जावास्क्रिप्ट द्वारा नियंत्रित किया जा रहा है।
theferrit32

31

यदि आपके पास केवल एक चार है और एक स्ट्रिंग नहीं है, तो आप उपयोग कर सकते हैं:

'\n'.charCodeAt();

0 छोड़ कर ...

यह हालांकि धीमी है। क्रोम के वर्तमान संस्करण के साथ, यह 5 गुना धीमा है।


10
यह वास्तव में अधिक समय लेता है। यह केवल शून्य का उपयोग करने के लिए तेज़ है। (मेरे कंप्यूटर पर, ~ दस-दस हज़ार पुनरावृत्तियों के माध्यम से ~ दो बार लंबे समय तक 0.05s बनाम 0.126 लिया गया)
royhowie

23

हालांकि अन्य उत्तर सही हैं, मैं इस तरह से पसंद करता हूं:

function ascii (a) { return a.charCodeAt(0); }

फिर, इसका उपयोग करने के लिए, बस:

var lineBreak = ascii("\n");

मैं एक छोटे शॉर्टकट सिस्टम के लिए इसका उपयोग कर रहा हूं:

$(window).keypress(function(event) {
  if (event.ctrlKey && event.which == ascii("s")) {
    savecontent();
    }
  // ...
  });

और आप इसे मानचित्र () या अन्य तरीकों से भी उपयोग कर सकते हैं:

var ints = 'ergtrer'.split('').map(ascii);

बस खूबसूरती के लिए एक नया ES6 लिखने का तरीका: const ascii = a => a.charCodeAt(0);
axkibe

20

उन लोगों के लिए जो स्ट्रिंग के लिए सभी ASCII कोड का योग प्राप्त करना चाहते हैं:

'Foobar'
  .split('')
  .map(x=>x.charCodeAt(0))
  .reduce((a,b)=>a+b);

या, ईएस 6:

[...'Foobar']
  .map(char => char.charCodeAt(0))
  .reduce((current, previous) => previous + current)

1
अपनी अंतिम पंक्ति को दोबारा जांचें।
य्प्निपन

सुरुचिपूर्ण! एक समारोह के रूप में: फ़ंक्शन ascii (str) {वापसी str .split ('') .map (फ़ंक्शन (char) {वापसी char + ":" + स्ट्रिंग (char.charCodeAt (0)) + "\ n";}); .reduce (फंक्शन (करंट, पिछला) {रिटर्न करंट + पिछला;}); }
डैरेन ग्रिफिथ

1
[...'Foobar'].reduce((i,s)=>s.charCodeAt(0)+i,0)
निक

1
किसी ने सभी ASCII कोडों का योग एक स्ट्रिंग में नहीं पूछा, और ऐसा करने की संभावना नहीं है।
कार्ल स्मिथ

8

जावास्क्रिप्ट UTF-16(डबल बाइट) के रूप में स्ट्रिंग्स को संग्रहीत करता है, इसलिए यदि आप दूसरी बाइट को अनदेखा करना चाहते हैं, तो इसे बिटवाइज़ &ऑपरेटर 0000000011111111(यानी 255) पर स्ट्रिप करें :

'a'.charCodeAt(0) & 255 === 97; // because 'a' = 97 0 
'b'.charCodeAt(0) & 255 === 98; // because 'b' = 98 0 
'✓'.charCodeAt(0) & 255 === 19; // because '✓' = 19 39

आप दूसरी बाइट को क्यों अनदेखा करना चाहेंगे?
रॉबर्ट 19

3
प्रश्न UTF-16 स्ट्रिंग (डबल बाइट) से ASCII के उत्पादन के बारे में पूछ रहा है। यदि आप दूसरी बाइट को नजरअंदाज करने में असफल होते हैं, तो जल्द या बाद में आपको गैर-अस्की कोड मिल जाएगा।
स्टीवन डी सलास

1
@Steven de Salas - गैर- ASCII वर्णों के लिए गैर- ASCII कोड प्राप्त करने के लिए आपका 'समाधान' गलत ASCII कोड को वापस करना है ??
कार्ल स्मिथ

@ कार्लस्मिथ, गलत नहीं है। बस चरित्र के गैर-एससीआई घटक को बाहर निकालने के लिए। यदि आप सिंगल बाइट्स के साथ काम कर रहे हैं तो यह उपयोगी है। आपकी परियोजना को एक अलग समाधान की आवश्यकता हो सकती है।
स्टीवन डे सालास

4

पूर्ण यूनिकोड समर्थन और उत्क्रमण सुनिश्चित करने के लिए, उपयोग करने पर विचार करें:

'\n'.codePointAt(0);

यह सुनिश्चित करेगा कि जब UTF-16 की सीमा से अधिक वर्णों का परीक्षण किया जाता है, तो आपको उनका सही कोड बिंदु मान मिलेगा।

जैसे

'𐩕'.codePointAt(0); // 68181
String.fromCodePoint(68181); // '𐩕'

'𐩕'.charCodeAt(0);  // 55298
String.fromCharCode(55298);  // '�'

यह विशेष वर्ण को हेक्स नोटेशन में बदलने के लिए भी उपयोगी हो सकता है, क्योंकि कुछ पाठ संपादक ऐसे पात्रों से सीधे निपटने के लिए ठीक से काम नहीं कर सकते हैं। उदा: अलर्ट (str.hexEncode ()। HexDecode ());
जोस टेपेडिनो

2

आप एक वर्ण दर्ज कर सकते हैं और इस कोड का उपयोग करके Ascii कोड प्राप्त कर सकते हैं

उदाहरण के लिए एक चरित्र दर्ज करें जैसे कि आप अससी कोड 65 प्राप्त करें

function myFunction(){
    var str=document.getElementById("id1");
    if (str.value=="") {
       str.focus();
       return;
    }
    var a="ASCII Code is == >  ";
document.getElementById("demo").innerHTML =a+str.value.charCodeAt(0);
}
<p>Check ASCII code</p>

<p>
  Enter any character:  
  <input type="text" id="id1" name="text1" maxLength="1">	</br>
</p>

<button onclick="myFunction()">Get ASCII code</button>

<p id="demo" style="color:red;"></p>


1

ES6 से सभी UTF-16 ( गैर-बीएमपी / अनुपूरक वर्ण ) का समर्थन करने के लिए string.codePointAt () विधि उपलब्ध है;

यह विधि charCodeAt का एक उन्नत संस्करण है जो केवल यूनिकोड कोड पॉइंट <65536 (2 16 - एक एकल 16 बिट) का समर्थन कर सकता है ।


4
यह उल्लेख के लायक है कि String.prototype.codePointAt()है द्वारा समर्थित नहीं किसी भी इंटरनेट एक्सप्लोरर के संस्करणों । (हालांकि यह एज पर समर्थित है।) आप यहां एक पॉलीफिल प्राप्त कर सकते हैं
mgthomas99
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.