Come ottenere carattere per un dato valore di ascii

Come posso ottenere il carattere ASCII di un dato codice ASCII.

Ad esempio, sto cercando un metodo che, dato il codice 65, restituisca “A”.

Grazie

Intendi “A” (una string ) o “A” (un char )?

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

Nota che ho fatto riferimento a Unicode piuttosto che ASCII in quanto codifica dei caratteri nativi di C #; essenzialmente ogni char è un punto di codice UTF-16.

  string c = Char.ConvertFromUtf32(65); 

c conterrà “A”

Funziona nel mio codice.

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

Ritorno: asciichar = 'A';

Ci sono alcuni modi per farlo.

Uso di char struct (per stringere e tornare di nuovo)

 string _stringOfA = char.ConvertFromUtf32(65); int _asciiOfA = char.ConvertToUtf32("A", 0); 

Semplicemente casting il valore (char e stringa mostrati)

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

Utilizzando ASCIIEncoding.
Questo può essere usato in un ciclo per fare un intero array di byte

 var _bytearray = new byte[] { 65 }; ASCIIEncoding _asiiencode = new ASCIIEncoding(); string _alpha = _asiiencode .GetString(_newByte, 0, 1); 

Puoi sovrascrivere la class del convertitore di tipi, questo ti permetterebbe di fare qualche fantasia convalida dei valori:

 var _converter = new ASCIIConverter(); string _stringA = (string)_converter.ConvertFrom(65); int _intOfA = (int)_converter.ConvertTo("A", typeof(int)); 

Ecco la class:

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

Può anche essere fatto in qualche altro modo

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

e quindi stampare il risultato. utilizzando il ciclo foreach .

Scusa se non conosco Java, ma stasera ho dovuto affrontare lo stesso problema, quindi ho scritto questo (è in 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; } 

Credo che un cast semplice possa funzionare

int ascii = (int) "A"

Ecco una funzione che funziona per tutti i 256 byte e garantisce che vedrai un carattere per ogni valore:

 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 }