Как я могу получить символ ascii данного кода ascii.Как получить символ для заданного значения ascii
например. Я ищу метод, который с учетом кода 65 вернет «A».
Благодаря
Как я могу получить символ ascii данного кода ascii.Как получить символ для заданного значения ascii
например. Я ищу метод, который с учетом кода 65 вернет «A».
Благодаря
ли вы имеете в виду "А" (а string
) или 'A' (а char
)?
int unicode = 65;
char character = (char) unicode;
string text = character.ToString();
Обратите внимание, что я называется Unicode, а не ASCII, как родная кодировка символов C# 's; по существу каждый char
является кодовой точкой UTF-16.
'A' отлично спасибо – Dunc
@ Jon Skeet: если я установил unicode = 128 , почему я не кипы, чтобы получить соответствующий ему персонаж. –
@EthanHunt: Тогда вы получите U + 0080, который является управляющим персонажем. Я подозреваю, что вы думаете о 128 в какой-то другой кодировке символов. –
string c = Char.ConvertFromUtf32(65);
с будет содержать "А"
Я считаю, что простой бросок может работать
int ascii = (int) "A"
Теперь ему нужна помощь с обратным .. Получение символа из числа – StefanE
Не то, чтобы данный код скомпилировался в любом случае - вы не можете преобразовать из 'string' в' int'. Если бы это было '' A'', тогда это сработало бы, но приведение было бы излишним, так как есть * неявное * преобразование из 'char' в' int'. –
Она также может быть сделано каким-либо иным образом
byte[] pass_byte = Encoding.ASCII.GetBytes("your input value");
и затем распечатать результат. используя цикл foreach
.
К сожалению, я не знаю 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;
}
Чтобы получить каждую комбинацию, просто запустите ее в цикле. – Matth3w
Это работает в моем коде.
string asciichar = (Convert.ToChar(65)).ToString();
Возврат: asciichar = 'A';
Упрощенное решение –
Вот функция, которая работает для всех 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
}
Если целью было получить видимый код Unicode для каждого кодового пункта ASCII, тогда [Control Pictures] (http://unicode.org/charts/PDF/U2400.pdf) можно использовать для замены [C0 Control] (http://unicode.org/charts/PDF/U0000.pdf). ␀ ␁ ␂ ␃ ␄ ␅ ␆ ␇ ␈ ␉ ␊ ␋ ␌ ␍ ␎ ␏ ... –
@TomBlodget Приятно знать, но это не ответ на вопрос ФП в. Не стесняйтесь представить еще одну функцию C#, которая будет делать то, о чем попросил OP. – Soonts
Обратите внимание, что ASCII только увеличивается до 127. Все, что выше этого, просто не ASCII, поэтому, по крайней мере, ваш метод плохо назван. –
Есть несколько способов сделать это.
Используя обугленную-структуру (в строку и обратно)
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);
}
}
, как кто-то писал раньше, просто литой символ с = (символ) 65 работ –
Возможные дубликат [Как получить Char от ASCI I Символьный код в C#] (http: // stackoverflow.com/questions/3414900/how-to-get-a-char-from-an-ascii-character-code-in-c-sharp) –