2016-04-09 4 views
0

Я пытаюсь преобразовать строку в ASCII и я добавил одну кнопку Преобразовать в ASCII и 2 текстовых поля:как преобразовать строку в ASCII в .NET

пример того, что я должен получить: для ввода [email protected] Мне нужно получить: 116 101 120 116 064 103 103 046 099 111 109 по какой-то причине я всегда получаю 78-74-40-67-67-2E-63-6F-6D

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace ascii 
{ 
    public partial class WebForm1 : System.Web.UI.Page 
    { 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 

    protected void TextBox1_TextChanged(object sender, EventArgs e) 
    { 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     foreach (char c in TextBox1.Text) 
     { 
      TextBox3.Text = Encoding.ASCII.GetString(new byte[] { }); 
     } 
    } 

    protected void TextBox3_TextChanged(object sender, EventArgs e) 
    { 
    } 

    } 
} 

Большое спасибо за помощь!

+5

Строки уже представлены с использованием Unicode, который является надмножеством ASCII. Что именно вы пытаетесь достичь? Вы хотите отображать свои символы в виде последовательности кодов ASCII? – Douglas

+1

int.Parse не удастся, если TextBox3.Text не содержит допустимого числа. Вам нужно будет объяснить, что именно вы пытаетесь сделать, хотя –

+0

Вы можете преобразовать символы строки в ascii int. Вы имели в виду: 'int.Parse (c)'? – sthomps

ответ

0

Предполагая, что вы хотите, чтобы преобразовать символы в ASCII и отображать их коды в десятичной системе:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    TextBox3.Text = String.Join(" ", Encoding.ASCII.GetBytes(TextBox1.Text)); 
} 

Обратите внимание, что этот код сначала преобразует текст в ASCII, который охватывает только символы в диапазоне от 0 до 127, так это зависит от того, что вы подразумеваете под «ASCII». Если вы хотите только представление номера кода в Юникоде, используйте ответ Дугласа.

+0

Спасибо , это приносит мне ошибку сообщения BitConverter.ToString (Encoding.ASCII.GetString (TextBox1.Text)); "невозможно преобразовать из строки в байт []" – user3385217

+0

@ user3385217 Ах, извините, отредактировано. – IllidanS4

+0

Выход из «битконвертера» равен hex. –

2

Предполагая, что ваши строки состоят только из ASCII-символов, вы можете использовать:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    TextBox3.Text = string.Join(" ", TextBox1.Text.Select(c => (int)c)); 
} 

Если ваши строки состоят из не-ASCII символов, то их UTF-16 кодовые блоки будут возвращены. Если это нежелательно, вы должны включить проверку:

if (TextBox1.Text.Any(c => c > 127)) 
     TextBox3.Text = "Invalid string"; 
Смежные вопросы