Làm cách nào tôi có thể chuyển đổi một ký tự thành mã ASCII của nó bằng JavaScript?
Ví dụ:
nhận 10 từ "\ n".
Làm cách nào tôi có thể chuyển đổi một ký tự thành mã ASCII của nó bằng JavaScript?
Ví dụ:
nhận 10 từ "\ n".
Câu trả lời:
"\n".charCodeAt(0);
String.fromCharCode(10)
.
0
(giá trị đối số đầu tiên) - chỉ cần "\n".charCodeAt()
làm.
String.fromCharCode( asciiNumVal )
, stringInstance.charCodeAt( index )
là không một phương thức tĩnh của lớp String
String.prototype.charCodeAt()
có thể chuyển đổi các ký tự chuỗi thành số ASCII. Ví dụ:
"ABC".charCodeAt(0) // returns 65
Đối với việc sử dụng ngược lại String.fromCharCode(10)
mà chuyển đổi số thành ký tự ASCII bằng nhau. Hàm này có thể chấp nhận nhiều số và nối tất cả các ký tự sau đó trả về chuỗi. Thí dụ:
String.fromCharCode(65,66,67); // returns 'ABC'
Dưới đây là tài liệu tham khảo các ký tự ASCII nhanh chóng:
{
"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": ""
}
C:\> man ascii
đưa raBad command or file name
Nếu bạn chỉ có một char và không phải là một chuỗi, bạn có thể sử dụng:
'\n'.charCodeAt();
bỏ qua 0 ...
Nó là chậm hơn mặc dù. Với phiên bản chrome hiện tại, nó chậm hơn 5 lần.
Trong khi các câu trả lời khác là đúng, tôi thích cách này:
function ascii (a) { return a.charCodeAt(0); }
Sau đó, để sử dụng nó, chỉ cần:
var lineBreak = ascii("\n");
Tôi đang sử dụng điều này cho một hệ thống phím tắt nhỏ:
$(window).keypress(function(event) {
if (event.ctrlKey && event.which == ascii("s")) {
savecontent();
}
// ...
});
Và thậm chí bạn có thể sử dụng nó bên trong map () hoặc các phương thức khác:
var ints = 'ergtrer'.split('').map(ascii);
const ascii = a => a.charCodeAt(0);
Đối với những người muốn nhận tổng số tất cả các mã ASCII cho một chuỗi:
'Foobar'
.split('')
.map(x=>x.charCodeAt(0))
.reduce((a,b)=>a+b);
Hoặc, ES6:
[...'Foobar']
.map(char => char.charCodeAt(0))
.reduce((current, previous) => previous + current)
[...'Foobar'].reduce((i,s)=>s.charCodeAt(0)+i,0)
JavaScript lưu trữ các chuỗi dưới dạng UTF-16
(byte kép), vì vậy nếu bạn muốn bỏ qua byte thứ hai, chỉ cần loại bỏ nó bằng toán &
tử bitwise 0000000011111111
(ví dụ 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
Để đảm bảo hỗ trợ và đảo ngược Unicode đầy đủ, hãy xem xét sử dụng:
'\n'.codePointAt(0);
Điều này sẽ đảm bảo rằng khi kiểm tra các ký tự vượt quá giới hạn UTF-16, bạn sẽ nhận được giá trị điểm mã thực sự của chúng.
ví dụ
'𐩕'.codePointAt(0); // 68181
String.fromCodePoint(68181); // '𐩕'
'𐩕'.charCodeAt(0); // 55298
String.fromCharCode(55298); // '�'
Bạn có thể nhập một ký tự và nhận Mã Ascii bằng Mã này
Ví dụ: Nhập một ký tự giống như bạn Nhận mã 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>
Để hỗ trợ tất cả UTF-16 (cũng không phải BMP / ký tự bổ sung ) từ ES6, phương thức string.codePointAt () có sẵn;
Phương pháp này là phiên bản cải tiến của charCodeAt, chỉ có thể hỗ trợ các điểm mã unicode <65536 (2 16 - 16 bit đơn).
String.prototype.codePointAt()
là không được hỗ trợ bởi bất kỳ phiên bản nào của Internet Explorer . (Tuy nhiên, nó được hỗ trợ trên Edge.) Bạn có thể nhận được một polyfill tại đây .