ฉันต้องการรับค่า ASCII ของอักขระในสตริงใน C #
ถ้าสตริงของฉันมีค่า "9quali52ty3" ฉันต้องการอาร์เรย์ที่มีค่า ASCII ของอักขระ 11 ตัวแต่ละตัว
ฉันจะรับค่า ASCII ใน C # ได้อย่างไร
ฉันต้องการรับค่า ASCII ของอักขระในสตริงใน C #
ถ้าสตริงของฉันมีค่า "9quali52ty3" ฉันต้องการอาร์เรย์ที่มีค่า ASCII ของอักขระ 11 ตัวแต่ละตัว
ฉันจะรับค่า ASCII ใน C # ได้อย่างไร
คำตอบ:
จากMSDN
string value = "9quali52ty3";
// Convert the string into a byte[].
byte[] asciiBytes = Encoding.ASCII.GetBytes(value);
ตอนนี้คุณมีอาร์เรย์ของค่า ASCII ของไบต์ ฉันได้รับสิ่งต่อไปนี้:
57113117 97 108105 53 50116121 51
Encoding.ASCII
ถูกกำหนดค่าให้ปล่อยหน่วยรหัส ASCII สำหรับอักขระแทนที่ ('?') สำหรับอักขระที่ไม่อยู่ในชุดอักขระ ASCII ตัวเลือกอื่น ๆ รวมถึงการโยนข้อยกเว้นมีอยู่ในEncoding
ชั้นเรียน และแน่นอนว่ามีการเข้ารหัสอักขระอื่น ๆ โดยเฉพาะ UTF-8 ด้วยเช่นกัน ควรตั้งคำถามว่าเป็น ASCII ที่ต้องการจริงหรือไม่
string s = "9quali52ty3";
foreach(char c in s)
{
Console.WriteLine((int)c);
}
สิ่งนี้ควรใช้งานได้:
string s = "9quali52ty3";
byte[] ASCIIValues = Encoding.ASCII.GetBytes(s);
foreach(byte b in ASCIIValues) {
Console.WriteLine(b);
}
คุณหมายความว่าคุณต้องการเฉพาะอักขระที่เป็นตัวอักษรไม่ใช่ตัวเลขหรือไม่? คุณต้องการ "คุณภาพ" เป็นผลหรือไม่? คุณสามารถใช้ Char.IsLetter หรือ Char.IsDigit เพื่อกรองออกทีละรายการ
string s = "9quali52ty3";
StringBuilder result = new StringBuilder();
foreach(char c in s)
{
if (Char.IsLetter(c))
result.Add(c);
}
Console.WriteLine(result); // quality
string value = "mahesh";
// Convert the string into a byte[].
byte[] asciiBytes = Encoding.ASCII.GetBytes(value);
for (int i = 0; i < value.Length; i++)
{
Console.WriteLine(value.Substring(i, 1) + " as ASCII value of: " + asciiBytes[i]);
}
string text = "ABCD";
for (int i = 0; i < text.Length; i++)
{
Console.WriteLine(text[i] + " => " + Char.ConvertToUtf32(text, i));
}
ถ้าจำไม่ผิดค่า ASCII คือจำนวนเจ็ดบิตล่างของหมายเลขUnicode
หากคุณต้องการ charcode สำหรับแต่ละอักขระในสตริงคุณสามารถทำสิ่งนี้:
char[] chars = "9quali52ty3".ToCharArray();
byte[] asciiBytes = Encoding.ASCII.GetBytes("Y");
foreach (byte b in asciiBytes)
{
MessageBox.Show("" + b);
}
โปรแกรมนี้จะยอมรับมากกว่าหนึ่งอักขระและส่งออกค่า ASCII:
using System;
class ASCII
{
public static void Main(string [] args)
{
string s;
Console.WriteLine(" Enter your sentence: ");
s = Console.ReadLine();
foreach (char c in s)
{
Console.WriteLine((int)c);
}
}
}
ผู้ตอบก่อนหน้านี้ได้ตอบคำถามแล้ว แต่ไม่ได้ให้ข้อมูลซึ่งทำให้ฉันคาดหวังได้ ฉันมีวิธีที่ส่งคืนสตริงอักขระหนึ่งตัว แต่ฉันต้องการอักขระที่ฉันสามารถแปลงเป็นเลขฐานสิบหกได้ รหัสต่อไปนี้แสดงให้เห็นถึงสิ่งที่ฉันคิดว่าจะพบโดยหวังว่าจะเป็นประโยชน์ต่อผู้อื่น
string s = "\ta£\x0394\x221A"; // tab; lower case a; pound sign; Greek delta;
// square root
Debug.Print(s);
char c = s[0];
int i = (int)c;
string x = i.ToString("X");
c = s[1];
i = (int)c;
x = i.ToString("X");
Debug.Print(c.ToString() + " " + i.ToString() + " " + x);
c = s[2];
i = (int)c;
x = i.ToString("X");
Debug.Print(c.ToString() + " " + i.ToString() + " " + x);
c = s[3];
i = (int)c;
x = i.ToString("X");
Debug.Print(c.ToString() + " " + i.ToString() + " " + x);
c = s[4];
i = (int)c;
x = i.ToString("X");
Debug.Print(c.ToString() + " " + i.ToString() + " " + x);
โค้ดด้านบนจะแสดงสิ่งต่อไปนี้ในหน้าต่างทันที:
a£Δ√
ก 97 61
A3 163 ปอนด์
Δ 916394
√ 8730 221A
คุณสามารถลบBOMโดยใช้:
//Create a character to compare BOM
char byteOrderMark = (char)65279;
if (sourceString.ToCharArray()[0].Equals(byteOrderMark))
{
targetString = sourceString.Remove(0, 1);
}
หรือใน LINQ:
string value = "9quali52ty3";
var ascii_values = value.Select(x => (int)x);
var as_hex = value.Select(x => ((int)x).ToString("X02"));
ฉันต้องการรับค่า ASCII ของอักขระในสตริงใน C #
ทุกคนให้คำตอบในโครงสร้างนี้ ถ้าสตริงของฉันมีค่า "9quali52ty3" ฉันต้องการอาร์เรย์ที่มีค่า ASCII ของอักขระ 11 ตัวแต่ละตัว
แต่ในคอนโซลเราทำงานตรงไปตรงมาดังนั้นเราจึงได้รับถ่านและพิมพ์รหัส ASCII หากฉันผิดดังนั้นโปรดแก้ไขคำตอบของฉัน
static void Main(string[] args)
{
Console.WriteLine(Console.Read());
Convert.ToInt16(Console.Read());
Console.ReadKey();
}
ทำไมไม่ใช้วิธีง่ายๆแบบเก่า ๆ
public int[] ToASCII(string s)
{
char c;
int[] cByte = new int[s.Length]; / the ASCII string
for (int i = 0; i < s.Length; i++)
{
c = s[i]; // get a character from the string s
cByte[i] = Convert.ToInt16(c); // and convert it to ASCII
}
return cByte;
}
string nomFile = "9quali52ty3";
byte[] nomBytes = Encoding.ASCII.GetBytes(nomFile);
string name = "";
foreach (byte he in nomBytes)
{
name += he.ToString("X02");
}
`
Console.WriteLine(name);
// ตอนนี้ดีขึ้นแล้ว;)