C # में स्ट्रिंग का ASCII मान कैसे प्राप्त करें


108

मैं C # स्ट्रिंग में ASCII वर्णों का मान प्राप्त करना चाहता हूं।

यदि मेरे स्ट्रिंग का मान "9quali52ty3" है, तो मुझे 11 वर्णों में से प्रत्येक के ASCII मूल्यों के साथ एक सरणी चाहिए।

मैं C # में ASCII मान कैसे प्राप्त कर सकता हूं?


क्या आपका मतलब है कि आप केवल अक्षर वर्ण चाहते हैं और अंक नहीं? तो आप परिणामस्वरूप "गुणवत्ता" चाहते हैं? कारण तब ASCII के बारे में बात करना थोड़ा समझ में आता है।
लार्स ट्रूजेंस

मैं उस स्ट्रिंग से प्रत्येक वर्ण की असिसी चाहता हूं, अंकों की अस्की और साथ ही "गुणवत्ता" शब्द की
अस्की

आपका क्या मतलब है कि आप स्ट्रिंग में प्रत्येक वर्ण के संख्यात्मक ASCII मूल्य चाहते हैं, यह मानते हुए कि पूरे स्ट्रिंग को ASCII में दर्शाया जा सकता है। आपका वर्तमान शब्द बहुत ही भ्रामक है।
bzlm

जवाबों:


189

से MSDN

string value = "9quali52ty3";

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

अब आपके पास बाइट्स के ASCII मान की एक सरणी है। मुझे निम्नलिखित मिला:

57 113 117 97 108 105 53 50 116 121 51


यह मुझे System.Byte [] दिखाता है। आपको शब्द में वर्णों के माध्यम से लूप करने की आवश्यकता है। निश्चित नहीं कि आपको यह काम करने के लिए कैसे मिला। ओपी की मदद की जो कि मायने रखती है।
निकोसवी

ध्यान दें: Encoding.ASCII ASCII वर्ण सेट में नहीं हैं वर्णों के लिए प्रतिस्थापन चरित्र ('?') के लिए ASCII कोड इकाई का उत्सर्जन करने के लिए कॉन्फ़िगर किया गया है। अन्य विकल्प-एक अपवाद फेंकने सहित- Encodingकक्षा में उपलब्ध हैं । और, निश्चित रूप से, अन्य चरित्र एन्कोडिंग- विशेष रूप से UTF-8- भी उपलब्ध हैं; एक सवाल करना चाहिए कि क्या यह ASCII है जो वास्तव में चाहता है।
टॉम ब्लोडेट

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

12
परिणामी कोड यूनिकोड संख्याएँ हैं और इनमें संभवतः गैर ASCII कोड हो सकते हैं।
लार्स ट्रूजेन्स

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
यह भी एक उदाहरण है कि दिए गए तार में प्रत्येक पात्र के लिए एएससीआई मूल्य को लागू करना है
महेश

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

अगर मुझे सही से याद है, तो ASCII मूल्य यूनिकोड संख्या के निचले सात बिट्स की संख्या है।


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

इससे पहले के उत्तरदाताओं ने इस सवाल का जवाब दिया है लेकिन इस जानकारी को प्रदान नहीं किया है जिससे शीर्षक मुझे उम्मीद है। मेरे पास एक विधि थी जिसने एक चरित्र स्ट्रिंग लौटा दी लेकिन मुझे एक ऐसा चरित्र चाहिए था जिसे मैं हेक्साडेसिमल में बदल सकूं। निम्नलिखित कोड दर्शाता है कि मैंने क्या सोचा था कि मैं इस उम्मीद में पाऊँगा कि यह दूसरों के लिए उपयोगी है।

  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

£ 163 A3

4 916 394

1 8730 221 ए


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

यह उत्तर थोड़ा और स्पष्टीकरण का उपयोग कर सकता है। यदि आपके पास अंग्रेजी में एक सहकर्मी अधिक धाराप्रवाह है, तो सम्मान के साथ आपको मदद मांगनी चाहिए।
ओ। जोन्स

मेरी व्याख्या बहुत सरल है क्योंकि मेरा कोड किसी भी चर के बिना बहुत सरल है, लेकिन एक सरल अवधारणा का उपयोग किया जाता है कि कैसे ASCII मूल्य को प्रिंट कर सकते हैं व्यक्तिगत सरल एक चार्ट प्राप्त करें और पूर्णांक मूल्य में चार को रूपांतरित करें ताकि आप इसे लागू करें और यदि मेरे स्पष्टीकरण में गलती हो तो कृपया कृपया इस धन्यवाद को सही करें
एमए नदीम

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
हालांकि यह कोड प्रश्न को हल कर सकता है, जिसमें यह भी बताया गया है कि यह समस्या कैसे और क्यों हल करती है, इससे वास्तव में आपके पोस्ट की गुणवत्ता को बेहतर बनाने में मदद मिलेगी, और शायद अधिक वोट भी मिलेंगे। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, न कि केवल उस व्यक्ति से जो अब पूछ रहा है। कृपया स्पष्टीकरण जोड़ने के लिए अपने उत्तर को संपादित करें और संकेत दें कि क्या सीमाएँ और मान्यताएँ लागू होती हैं।
धर्मन

एक संकलन त्रुटि देता है: "अप्रत्याशित चरित्र"। ToString के बाद दो `शायद वहाँ नहीं होना चाहिए।
बीडीएल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.