Comment convertir chaque lettre d'une chaîne en sa valeur de caractère ASCII?
Pour n'importe quelle chaîne, essayez ceci:
string s = Console.ReadLine();
foreach( char c in s)
{
Console.WriteLine(System.Convert.ToInt32(c));
}
Console.ReadKey();
.NET stocke toutes les chaînes sous forme d'une séquence d'unités de code UTF-16. (Ceci est assez proche des "caractères Unicode" pour la plupart des buts.)
Heureusement pour vous, Unicode a été conçu de telle sorte que les valeurs ASCII correspondent au même nombre dans Unicode. Ainsi, après avoir converti chaque caractère en entier, vous pouvez simplement vérifier s'il se trouve dans la plage ASCII. Notez que vous pouvez utiliser une conversion implicite de char
à int
- il n'est pas nécessaire d'appeler une méthode de conversion:
string text = "Here's some text including a \u00ff non-ASCII character";
foreach (char c in text)
{
int unicode = c;
Console.WriteLine(unicode < 128 ? "ASCII: {0}" : "Non-ASCII: {0}", unicode);
}
C'est assez simple:
string s = "ABCD";
byte[] bytes = Encoding.ASCII.GetBytes(s);
int result = BitConverter.ToInt32(bytes, 0);
Vous avez maintenant un tableau pour tous les octets et le codage int
est result
. Si vous devez revenir en arrière, vous pouvez aller en tant que:
int i = result;
byte[] bytes2 = BitConverter.GetBytes(i);
string s2 = Encoding.ASCII.GetString(bytes);
Essayez Linq:
Result = string.Join("", input.ToCharArray().Where(x=> ((int)x) < 127));
Ceci filtrera tous les caractères non ascii. Maintenant, si vous voulez un équivalent, essayez ce qui suit:
Result = string.Join("", System.Text.Encoding.ASCII.GetChars(System.Text.Encoding.ASCII.GetBytes(input.ToCharArray())));
Je pense que ce code peut vous aider:
string str = char.ConvertFromUtf32(65)
Utilisez Convert.ToInt32 () pour la conversion. Vous pouvez consulter Comment convertir une chaîne en ASCII valeur en C # et ASCII valeurs.