C #에서 문자열의 ASCII 값을 얻는 방법


108

C #의 문자열에서 문자의 ASCII 값을 가져오고 싶습니다.

내 문자열의 값이 "9quali52ty3"이면 11 자 각각의 ASCII 값이있는 배열이 필요합니다.

C #에서 ASCII 값을 어떻게 얻을 수 있습니까?


숫자가 아닌 알파벳 문자 만 원한다는 뜻입니까? 결과적으로 "품질"을 원하십니까? ASCII에 대해 이야기하는 것은 의미가 없습니다.
Lars Truijens

나는 그 문자열에서 각 문자의 Ascii, 숫자의 ASCII 및 단어 "quality"의 ascii를 원합니다
RBS

의미하는 바는 전체 문자열을 ASCII로 나타낼 수 있다고 가정하여 문자열의 각 문자에 대한 숫자 ASCII 값을 원한다는 것입니다. 현재 표현이 매우 혼란 스럽습니다.
bzlm

답변:


189

에서 MSDN

string value = "9quali52ty3";

// Convert the string into a byte[].
byte[] asciiBytes = Encoding.ASCII.GetBytes(value);

이제 바이트의 ASCII 값 배열이 있습니다. 나는 다음을 얻었다 :

57113117 97108105 53 50116121 51


이것은 System.Byte []를 보여줍니다. 단어의 문자를 반복해야합니다. 어떻게 작동하는지 잘 모르겠습니다. 중요한 것은 OP를 도왔습니다.
NikosV

참고 : Encoding.ASCIIASCII 문자 세트에없는 문자의 대체 문자 ( '?')에 대한 ASCII 코드 단위를 내보내도록 구성됩니다. 예외 발생을 포함한 다른 옵션은 Encoding클래스 에서 사용할 수 있습니다 . 물론 다른 문자 인코딩, 특히 UTF-8도 사용할 수 있습니다. 실제로 원하는 것이 ASCII인지 질문해야합니다.
Tom Blodget

37
string s = "9quali52ty3";
foreach(char c in s)
{
  Console.WriteLine((int)c);
}

12
결과 코드는 유니 코드 숫자이며 잠재적으로 비 ASCII 코드를 포함 할 수 있습니다.
Lars Truijens

22

이것은 작동합니다.

string s = "9quali52ty3";
byte[] ASCIIValues = Encoding.ASCII.GetBytes(s);
foreach(byte b in ASCIIValues) {
    Console.WriteLine(b);
}

8

숫자가 아닌 알파벳 문자 만 원한다는 뜻입니까? 결과적으로 "품질"을 원하십니까? 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

4
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]);
    }

3
이것은 또한 주어진 문자열의 각 문자에 대한 ascii 값을 구현하는 예제 중 하나입니다
mahesh

4
string text = "ABCD";
for (int i = 0; i < text.Length; i++)
{
  Console.WriteLine(text[i] + " => " + Char.ConvertToUtf32(text, i));
}

내가 올바르게 기억한다면 ASCII 값은 유니 코드 숫자 의 하위 7 비트 숫자입니다.


3

문자열의 각 문자에 대한 문자 코드를 원하면 다음과 같이 할 수 있습니다.

char[] chars = "9quali52ty3".ToCharArray();

3
byte[] asciiBytes = Encoding.ASCII.GetBytes("Y");
foreach (byte b in asciiBytes)
{
    MessageBox.Show("" + b);
}

3

이 프로그램은 두 개 이상의 문자를 받아들이고 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);
        }
    }
}

2

이전 응답자들이 질문에 답했지만 제목이 예상했던 정보를 제공하지 않았습니다. 하나의 문자열을 반환하는 메서드가 있었지만 16 진수로 변환 할 수있는 문자를 원했습니다. 다음 코드는 다른 사람들에게 도움이되기를 바라면서 내가 찾을 것이라고 생각한 것을 보여줍니다.

  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

√ 8730221A


2

다음을 사용 하여 BOM 을 제거 할 수 있습니다 .

//Create a character to compare BOM
char byteOrderMark = (char)65279;
if (sourceString.ToCharArray()[0].Equals(byteOrderMark))
{
    targetString = sourceString.Remove(0, 1);
}

1

또는 LINQ에서 :

string value = "9quali52ty3";
var ascii_values = value.Select(x => (int)x);
var as_hex = value.Select(x => ((int)x).ToString("X02"));

0

C #의 문자열에서 문자의 ASCII 값을 가져오고 싶습니다.

모두가이 구조에서 답을 제시합니다. 내 문자열의 값이 "9quali52ty3"이면 11 자 각각의 ASCII 값이있는 배열이 필요합니다.

그러나 콘솔에서 우리는 솔직하게 작동하므로 문자를 얻고 내가 잘못하면 ASCII 코드를 인쇄하므로 내 대답을 수정하십시오.

 static void Main(string[] args)
        {
            Console.WriteLine(Console.Read());
            Convert.ToInt16(Console.Read());
            Console.ReadKey();
        }

이 답변은 조금 더 설명을 사용할 수 있습니다. 영어에 능통 한 동료가 있다면 존경심으로 도움을 요청해야합니다.
O. Jones

내 코드는 변수없이 매우 간단하지만 간단한 개념을 사용했기 때문에 내 설명은 매우 간단합니다. 어떻게하면 ASCII 값을 개별적으로 인쇄 할 수 있습니까? 간단한 문자를 얻고 문자를 정수 값으로 변환하십시오. 그러므로 이것을 구현하고 내 설명에 실수가 있으면 이 덕분에 수정하시기 바랍니다
MA 나딤

0

왜 구식이 아닌 쉬운 방법입니까?

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

-1
    string nomFile = "9quali52ty3";  

     byte[] nomBytes = Encoding.ASCII.GetBytes(nomFile);
     string name = "";
     foreach (byte he in nomBytes)
     {
         name += he.ToString("X02");
     }
`
     Console.WriteLine(name);

// 이제 더 나아졌습니다;)


1
이 코드가 문제를 해결할 수 있지만 문제를 해결하는 방법과 이유에 대한 설명포함 하여 게시물의 품질을 향상시키는 데 실제로 도움이되며 아마도 더 많은 찬성 투표를 받게됩니다. 지금 질문하는 사람뿐만 아니라 미래에 독자를 위해 질문에 답하고 있다는 것을 기억하십시오. 제발 편집 설명을 추가하고 제한 및 가정이 적용 무엇의 표시를 제공하는 답변을.
Dharman

컴파일 오류를 제공합니다 : "예기치 않은 문자". ToString 뒤의 두`는 아마 거기에 있으면 안됩니다.
BDL
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.