Преобразование Char -> ASCII

Программирование на Юнити.

Преобразование Char -> ASCII

Сообщение Lowfog 16 дек 2010, 23:36

Подскажите, как правильно преобразовать char в ascii !

Я делаю:
Синтаксис:
Используется csharp
 
void AnyF(){
       String str;
        Encoding ascii=Encoding.ASCII;
        Byte[] bytes=new Byte[40];
        str="1234543112345413";
        Char[] chA= str.ToCharArray();

        while (i<bytes.Length){
                bytes= ascii.GetBytes(chA);
                Debug.Log("chA "+ chA[i]);
                i++;
        }
}


При этом массив chA выкидывает все повторяющиеся символы.
Lowfog
UNIт
 
Сообщения: 63
Зарегистрирован: 26 апр 2010, 08:18

Re: Преобразование Char -> ASCII

Сообщение alexz 17 дек 2010, 00:55

Не понимаю, что ты хочешь сделать. В примере строки

Encoding ascii=Encoding.ASCII;
Byte[] bytes=new Byte[40];
bytes= ascii.GetBytes(chA);


не делают никакой полезной работы, влияющей на результат.

---
Char ― это тип данных, ASCII ― кодировка. Вещи, между собой напрямую не связанные. Если тебе надо из массива символов получить массив их кодов в ASCII, то в строке bytes = ascii.GetBytes(chA) ты их получил.

---
Синтаксис:
Используется csharp
using System.Text;
using System.Linq;

...
void Encode()
{
        byte[] codes = Encoding.ASCII.GetBytes("1234543112345413");

        Debug.Log(string.Join(", ", codes.Select(code => code.ToString()).ToArray())); // Эта строка покажет содержимое массива codes ― напечатает "49, 50, 51, 52, 53, 52, 51, 49, 49, 50, 51, 52, 53, 52, 49, 51"
}
 
alexz
UNITрон
 
Сообщения: 270
Зарегистрирован: 16 ноя 2010, 23:37

Re: Преобразование Char -> ASCII

Сообщение Lowfog 18 дек 2010, 01:29

Попробовал ваш код, несколько вопросов:
- пишет ошибку - у переменной bytes нет свойства Select. Как правильно?

Смысл перевода в ASCII в том, чтобы можно было загрузить строку из WWW. в строке находить символ переноса. Это необходимо для построения карты, вида:
12312
23132
33311
p

Может есть проще способ?
Lowfog
UNIт
 
Сообщения: 63
Зарегистрирован: 26 апр 2010, 08:18

Re: Преобразование Char -> ASCII

Сообщение alexz 18 дек 2010, 02:25

Lowfog писал(а):Попробовал ваш код, несколько вопросов:
- пишет ошибку - у переменной bytes нет свойства Select. Как правильно?

Чтоб метод Select был доступен у массивов, списков и прочих перечислений, нужно два условия:
1) строчка using System.Linq;
2) .Net Framework 3.5

Debug.Log(string.Join(", ", codes.Select(code => code.ToString()).ToArray()));
Я так просто для краткости написал, потому что эта строка не делает никакой полезной работы, а просто выводит полученный ранее результат в удобоваримой форме. Можно переписать так:

Синтаксис:
Используется csharp
byte[] codes = Encoding.ASCII.GetBytes("1234543112345413");

StringBuilder result = new StringBuilder(codes[0].ToString());
for (int i = 1; i < codes.Length; i++)
{
        result.Append(", ");
        result.Append(codes[i].ToString());
}

Debug.Log(result); // Напечатает "49, 50, 51, 52, 53, 52, 51, 49, 49, 50, 51, 52, 53, 52, 49, 51"


Или так:

Синтаксис:
Используется csharp
byte[] codes = Encoding.ASCII.GetBytes("1234543112345413");

string[] results = new string[codes.Length];
for (int i = 0; i < codes.Length; i++)
{
        results[i] = codes[i].ToString();
}

Debug.Log(string.Join(", ", results)); // Напечатает "49, 50, 51, 52, 53, 52, 51, 49, 49, 50, 51, 52, 53, 52, 49, 51"


Смысл перевода в ASCII в том, чтобы можно было загрузить строку из WWW. в строке находить символ переноса. Это необходимо для построения карты, вида:
12312
23132
33311
p
Может есть проще способ?


Для того чтобы разбить длинную строку по разделителям на множество коротких, проще использовать метод string.Split

Синтаксис:
Используется csharp
string text = "1234\n5431\n1234\n5413"; // Исходные данные с символами переноса строки

string[] lines = text.Split(new string[] { "\r\n", "\n\r", "\n", "\r" }, StringSplitOptions.None); // Разбиваем исходную строку на массив строк, учитывая все возможные варианты стандартных символов переноса

foreach (string line in lines)
{
        Debug.Log(line);
}
// В результате будет напечатано:
// 1234
// 5431
// 1234
// 5413
alexz
UNITрон
 
Сообщения: 270
Зарегистрирован: 16 ноя 2010, 23:37

Re: Преобразование Char -> ASCII

Сообщение Lowfog 20 дек 2010, 22:18

Наконец то попробовал.
Благодарю, все отлично работает!
Lowfog
UNIт
 
Сообщения: 63
Зарегистрирован: 26 апр 2010, 08:18


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 7