2011-01-10 3 views
46

Как я могу получить символ ascii данного кода ascii.Как получить символ для заданного значения ascii

например. Я ищу метод, который с учетом кода 65 вернет «A».

Благодаря

+3

, как кто-то писал раньше, просто литой символ с = (символ) 65 работ –

+0

Возможные дубликат [Как получить Char от ASCI I Символьный код в C#] (http: // stackoverflow.com/questions/3414900/how-to-get-a-char-from-an-ascii-character-code-in-c-sharp) –

ответ

105

ли вы имеете в виду "А" (а string) или 'A' (а char)?

int unicode = 65; 
char character = (char) unicode; 
string text = character.ToString(); 

Обратите внимание, что я называется Unicode, а не ASCII, как родная кодировка символов C# 's; по существу каждый char является кодовой точкой UTF-16.

+0

'A' отлично спасибо – Dunc

+0

@ Jon Skeet: если я установил unicode = 128 , почему я не кипы, чтобы получить соответствующий ему персонаж. –

+0

@EthanHunt: Тогда вы получите U + 0080, который является управляющим персонажем. Я подозреваю, что вы думаете о 128 в какой-то другой кодировке символов. –

28
string c = Char.ConvertFromUtf32(65); 

с будет содержать "А"

-1

Я считаю, что простой бросок может работать

int ascii = (int) "A"

+0

Теперь ему нужна помощь с обратным .. Получение символа из числа – StefanE

+10

Не то, чтобы данный код скомпилировался в любом случае - вы не можете преобразовать из 'string' в' int'. Если бы это было '' A'', тогда это сработало бы, но приведение было бы излишним, так как есть * неявное * преобразование из 'char' в' int'. –

1

Она также может быть сделано каким-либо иным образом

byte[] pass_byte = Encoding.ASCII.GetBytes("your input value"); 

и затем распечатать результат. используя цикл foreach.

0

К сожалению, я не знаю Java, но я столкнулся с той же проблемой, сегодня вечером, так что я написал это (это в C#)

public string IncrementString(string inboundString) { 
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(inboundString.ToArray); 
bool incrementNext = false; 

for (l = -(bytes.Count - 1); l <= 0; l++) { 
    incrementNext = false; 

    int bIndex = Math.Abs(l); 
    int asciiVal = Conversion.Val(bytes(bIndex).ToString); 

    asciiVal += 1; 

    if (asciiVal > 57 & asciiVal < 65) 
     asciiVal = 65; 
    if (asciiVal > 90) { 
     asciiVal = 48; 
     incrementNext = true; 
    } 

    bytes(bIndex) = System.Text.Encoding.ASCII.GetBytes({ Strings.Chr(asciiVal) })(0); 

    if (incrementNext == false) 
     break; // TODO: might not be correct. Was : Exit For 
} 

inboundString = System.Text.Encoding.ASCII.GetString(bytes); 

return inboundString; 
} 
+0

Чтобы получить каждую комбинацию, просто запустите ее в цикле. – Matth3w

5

Это работает в моем коде.

string asciichar = (Convert.ToChar(65)).ToString(); 

Возврат: asciichar = 'A';

+0

Упрощенное решение –

-1

Вот функция, которая работает для всех 256 байт, и гарантирует, что вы будете видеть символ для каждого значения:

static char asciiSymbol(byte val) 
{ 
    if(val < 32) return '.'; // Non-printable ASCII 
    if(val < 127) return (char)val; // Normal ASCII 
    // Workaround the hole in Latin-1 code page 
    if(val == 127) return '.'; 
    if(val < 0x90) return "€.‚ƒ„…†‡ˆ‰Š‹Œ.Ž."[ val & 0xF ]; 
    if(val < 0xA0) return ".‘’“”•–—˜™š›œ.žŸ"[ val & 0xF ]; 
    if(val == 0xAD) return '.'; // Soft hyphen: this symbol is zero-width even in monospace fonts 
    return (char)val; // Normal Latin-1 
} 
+0

Если целью было получить видимый код Unicode для каждого кодового пункта ASCII, тогда [Control Pictures] (http://unicode.org/charts/PDF/U2400.pdf) можно использовать для замены [C0 Control] (http://unicode.org/charts/PDF/U0000.pdf). ␀ ␁ ␂ ␃ ␄ ␅ ␆ ␇ ␈ ␉ ␊ ␋ ␌ ␍ ␎ ␏ ... –

+1

@TomBlodget Приятно знать, но это не ответ на вопрос ФП в. Не стесняйтесь представить еще одну функцию C#, которая будет делать то, о чем попросил OP. – Soonts

+0

Обратите внимание, что ASCII только увеличивается до 127. Все, что выше этого, просто не ASCII, поэтому, по крайней мере, ваш метод плохо назван. –

0

Есть несколько способов сделать это.

Используя обугленную-структуру (в строку и обратно)

string _stringOfA = char.ConvertFromUtf32(65); 

int _asciiOfA = char.ConvertToUtf32("A", 0); 

Просто литье значения (символа и строки, показанное)

char _charA = (char)65; 

string _stringA = ((char)65).ToString(); 

Использование ASCIIEncoding.
Это может быть использован в цикле, чтобы сделать весь массив байт

var _bytearray = new byte[] { 65 }; 

ASCIIEncoding _asiiencode = new ASCIIEncoding(); 

string _alpha = _asiiencode .GetString(_newByte, 0, 1); 

Вы можете переопределить класс типа преобразователя, это позволит вам сделать некоторые фантазии проверки значений:

var _converter = new ASCIIConverter(); 

string _stringA = (string)_converter.ConvertFrom(65); 

int _intOfA = (int)_converter.ConvertTo("A", typeof(int)); 

Вот Класс:

public class ASCIIConverter : TypeConverter 
{ 
    // Overrides the CanConvertFrom method of TypeConverter. 
    // The ITypeDescriptorContext interface provides the context for the 
    // conversion. Typically, this interface is used at design time to 
    // provide information about the design-time container. 
    public override bool CanConvertFrom(ITypeDescriptorContext context, 
     Type sourceType) 
    { 
     if (sourceType == typeof(string)) 
     { 
      return true; 
     } 
     return base.CanConvertFrom(context, sourceType); 
    } 

    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) 
    { 
     if (destinationType == typeof(int)) 
     { 
      return true; 
     } 
     return base.CanConvertTo(context, destinationType); 
    } 


    // Overrides the ConvertFrom method of TypeConverter. 
    public override object ConvertFrom(ITypeDescriptorContext context, 
     CultureInfo culture, object value) 
    { 

     if (value is int) 
     { 
      //you can validate a range of int values here 
      //for instance 
      //if (value >= 48 && value <= 57) 
      //throw error 
      //end if 

      return char.ConvertFromUtf32(65); 
     } 
     return base.ConvertFrom(context, culture, value); 
    } 

    // Overrides the ConvertTo method of TypeConverter. 
    public override object ConvertTo(ITypeDescriptorContext context, 
     CultureInfo culture, object value, Type destinationType) 
    { 
     if (destinationType == typeof(int)) 
     { 
      return char.ConvertToUtf32((string)value, 0); 
     } 
     return base.ConvertTo(context, culture, value, destinationType); 
    } 
} 
Смежные вопросы