জাভাস্ক্রিপ্টে অক্ষরকে ASCII কোডে রূপান্তর করুন


952

আমি কীভাবে জাভাস্ক্রিপ্ট ব্যবহার করে একটি অক্ষরকে তার ASCI কোডে রূপান্তর করতে পারি?

উদাহরণ স্বরূপ:

"\ n" থেকে 10 পান।


10
দয়া করে নোট করুন যে বেশিরভাগ উত্তরে প্রস্তাবিত স্ট্রিং.প্রোটোটাইপ.কোর্ড কোড () পদ্ধতিটি ইউটিএফ -16 কোড ইউনিটটি ফিরিয়ে দেবে (historicalতিহাসিক কারণে পুরো সঠিক ইউটিএফ -16 এনকোডিংও নয়)। শুধুমাত্র প্রথম 128 ইউনিকোড কোড পয়েন্টগুলি ASCII অক্ষর এনকোডিংয়ের একটি সরাসরি মিল।
vlvaro González

উত্তর:


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
@Mathias Bynens, এটা অবশ্যই শূন্য ডিফল্ট করে কিন্তু আমি শুধু মাত্র কর্মক্ষমতার উপর সুদ পরীক্ষা থেকে একটি দৌড়ে এবং এটি সঞ্চালিত ** অপেক্ষাকৃত খারাপভাবে 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
আরও ভাল ascii উল্লেখ: en.wikedia.org/wiki/ASCII - আমি এই পৃষ্ঠায় টেবিলগুলির জন্য যে রঙটি করেছি তা প্রায় 10 বছর পরে রয়েছে:)
বিটি

9
@ থ্রে গ্রেফক্স C:\> man asciiদেয়Bad command or file name
e2-e4

নোট করুন যে এই পদ্ধতিগুলি ইউটিএফ -16 সামঞ্জস্যপূর্ণ, যার অর্থ ইনপুট স্ট্রিংয়ের উপর নির্ভর করে, চারকোডএট অতীতের 1 বাইট ASCII মান 0-127 প্রসারিত করতে পারে। যদি স্বেচ্ছাসেবী স্ট্রিং ইনপুট জাভাস্ক্রিপ্ট দ্বারা গৃহীত হয় এবং পরিচালনা করা হয় তবে তা এই সীমার মধ্যে রয়েছে বলে মনে করবেন না।
theferrit32

31

আপনার যদি কেবল একটি চর থাকে এবং স্ট্রিং না থাকে তবে আপনি ব্যবহার করতে পারেন:

'\n'.charCodeAt();

0 বাদ ...

যদিও এটি ধীর। ক্রোমের বর্তমান সংস্করণ সহ এটি 5 গুণ ধীর।


10
এটি আসলে আরও বেশি সময় নেয়। কেবল শূন্যটি ব্যবহার করা এটি দ্রুত। (আমার কম্পিউটারে, এটি কয়েক দশ হাজার পুনরাবৃত্তির মাধ্যমে ~ 0.055s বনাম 0.126 এর তুলনায় দ্বিগুণ সময় নিয়েছে)
রোহিউই

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);

বা, ES6:

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

1
আপনার শেষ লাইনটি আবার পরীক্ষা করুন check
Ypnypn

মার্জিত! একটি ফাংশন হিসাবে: ফাংশন আসকি (স্ট্র) {রিটার্ন স্ট্র। স্প্লিট ('') .ম্যাপ (ফাংশন (চর) {রিটার্ন চর + ":" + স্ট্রিং (char.charCodeAt (0)) + "\ n";}) .reduce (ফাংশন (বর্তমান, পূর্ববর্তী) current বর্তমান + পূর্ববর্তী; {); }
ড্যারেন গ্রিফিথ

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

কেন আপনি দ্বিতীয় বাইট উপেক্ষা করতে চান?
রবার্গ

3
প্রশ্নটি কোনও ইউটিএফ -16 স্ট্রিং (ডাবল বাইট) থেকে ASCII উত্পাদন সম্পর্কে জিজ্ঞাসা করছে। শীঘ্রই বা পরে আপনি দ্বিতীয় বাইট উপেক্ষা করতে ব্যর্থ হলে আপনি অ-এস্কি কোড পাবেন।
স্টিভেন ডি সালাস

1
@ স্টিভেন ডি সালাস - নন-এএসসিআইআই অক্ষরগুলির জন্য নন-এসএসআইআই কোড পাওয়ার আপনার 'সমাধান' ভুল 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 থেকে সমস্ত ইউটিএফ -16 ( বি-বিএমপি / পরিপূরক অক্ষরগুলিও সমর্থন করে) সমর্থন করার জন্য স্ট্রিংকোডপয়েন্টএটি () পদ্ধতি উপলব্ধ;

এই পদ্ধতিটি চারকোডএটের উন্নত সংস্করণ যা কেবল ইউনিকোড কোডপয়েন্টগুলিকেই সমর্থন করতে পারে <65536 (2 16 - একক 16 বিট)।


4
এটা তোলে মূল্য উল্লেখ করে হয় String.prototype.codePointAt()হয় দ্বারা সমর্থিত নয় কোন Internet Explorer এর সংস্করণ । (তবে এটি এজ এ সমর্থিত)) আপনি এখানে একটি পলিফিল পেতে পারেন ।
mgthomas99
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.