Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/92: Рейтинг темы: голосов - 92, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 21.05.2011
Сообщений: 23

Аналог ord из Pascal (код символа)

25.05.2011, 17:22. Показов 17329. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан символ C. Вывести его код (то есть его номер в кодовой таблице)
Pascal
1
2
3
4
5
6
7
8
9
Program stroka1;
Var a:byte;
b:char;
begin
b:='C';
a:=ord(b);
writeln('код равен ',a);
readln;
end.
как сделать такую же задачу в c#?
а точнее аналог ord или что-нибудь ещё как можно сделать данную задачу
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.05.2011, 17:22
Ответы с готовыми решениями:

Аналог функций chr() и ord() из Pascal
Подскажите пожалуйста, если в Visual Studio C++ аналог функций chr() и ord() как в pascal? Заранее спасибо:)

Каким будет результат выполнения выражения (ord(chr(ord('8')+1))-ord('0'))+round(cos(sin(0))+3/1.5 ?
Если дано выражение (ord(chr(ord('8')+1))-ord('0'))+round(cos(sin(0))+3/1.5, то результат: 1. 10 2. 11 3. 12 4. 13 5. выражение...

Аналог ord и chr в С++
сабж.

19
Заблокирован
25.05.2011, 17:28
Лучший ответ Сообщение было отмечено be1l как решение

Решение

C#
1
2
3
4
5
6
            byte a;
            char b;
            b='C';
            a=Convert.ToByte(b);
            Console.WriteLine("код равен "+ a);
            Console.ReadLine();
1
0 / 0 / 0
Регистрация: 21.05.2011
Сообщений: 23
25.05.2011, 17:29  [ТС]
спасибо
0
0 / 0 / 1
Регистрация: 23.04.2017
Сообщений: 17
07.09.2018, 00:32
можно так:

C#
1
2
3
4
static byte Ord(char ch)
{
   return System.Text.Encoding.ASCII.GetBytes(new char[] { ch })[0];
}

или так:

C#
1
2
3
4
static byte Ord(char ch)
{
   return (byte)ch;
}
ну или как сказано выше:

C#
1
2
3
4
public static byte Ord(char ch)
{
   return System.Convert.ToByte(ch);
}
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
07.09.2018, 16:01
А почему никто не предложил:
C#
1
2
3
4
5
6
7
8
9
using System;
 
class MainClass
{
  public static void Main(string[] args)
  {
    Console.WriteLine((byte)'a'); // <--
  }
}
?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
07.09.2018, 17:19
Соколиный глаз, потому что это плохой вариант. Как и те что предложил wthorn. Символ занимает два байта и значит приведение к byte будет давать неверный результат. Лучше приводить к ushort или int.
1
31 / 27 / 8
Регистрация: 25.05.2015
Сообщений: 113
07.09.2018, 17:44
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
А почему никто не предложил:
C#
1
Console.WriteLine((byte)'a'); // <--
?
А что вы скажите тогда про юникод и т.д. в таком случае? Может лучше Char.GetNumericValue ?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
07.09.2018, 17:47
Цитата Сообщение от korochinskiy Посмотреть сообщение
Может лучше Char.GetNumericValue ?
Он предназначен только для числовых символов.
0
31 / 27 / 8
Регистрация: 25.05.2015
Сообщений: 113
07.09.2018, 17:52
Да погорячился, сори...
C#
1
MessageBox.Show(((uint)('a')).ToString());
0
0 / 0 / 1
Регистрация: 23.04.2017
Сообщений: 17
12.09.2018, 13:32
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Символ занимает два байта и значит приведение к byte будет давать неверный результат.
Ну не знаю. Я проверил 2 функции из 3х, что я написал, проверял значение цифр, англ.букв и знаков препинания - и если верить таблице в интернете, обе функции работают корректно ибо ответы совпадают со значениями в таблице.
Программа выдала что: цифра 7 = 55, буква q = 113, символ ~ = 126.
Возможно ( я не исключаю) что я Олень, однако в чём тут неверный результат?
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
12.09.2018, 13:54
Цитата Сообщение от wthorn Посмотреть сообщение
Возможно ( я не исключаю) что я Олень, однако в чём тут неверный результат?
C#
1
2
3
4
            char c = '‰';
            char c2 = (char)(byte)c;
            Console.WriteLine(c);
            Console.WriteLine(c2);
0
0 / 0 / 1
Регистрация: 23.04.2017
Сообщений: 17
12.09.2018, 14:19
Цитата Сообщение от КОП Посмотреть сообщение
char c = '‰';
char c2 = (char)(byte)c;
Console.WriteLine(c);
Console.WriteLine(c2);
Согласно таблице ‰ = 137
Странный символ, мой VS упорно выводит char ch = '‰'; как %.
Мой IDE отказывается видеть символ ‰ как ‰, и упорно твердит что ‰ это %.
Ну в случае с именно этим символом не корректно работают как мои варианты так и варианты с ushort или int.
Даже стало интересно)
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
12.09.2018, 14:42
wthorn, в строке в .NET могут одновременно хранитьтся символы на разных языках. Попробуй ответить как можно поместить в один байт символы все алфавитов? После этого отпадут сомнения в том что приведение символа к байту правильное решение.
1
0 / 0 / 1
Регистрация: 23.04.2017
Сообщений: 17
12.09.2018, 14:49
Кривая таблица видимо мне попалась. Верный код = 8240.
В этом случае варианты с int и ushort - работают, а мои нет.
Согласен)

Тогда вот так:

C#
1
2
3
4
static int Ord(char ch)
{
   return (int)ch;
}
C#
1
2
3
4
public static int Ord(char ch)
{
   return System.Convert.ToInt16(ch);
}
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
12.09.2018, 14:50
Цитата Сообщение от wthorn Посмотреть сообщение
Кривая таблица видимо мне попалась.
Лови ссылку на правильную
https://unicode-table.com/ru/
1
0 / 0 / 1
Регистрация: 23.04.2017
Сообщений: 17
12.09.2018, 14:56
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Лови ссылку на правильную
С того же сайта верный код я и взял:
https://unicode-table.com/ru/2030/ - символ промилле (в UTF-16BE и UTF-32BE)
Спасибо!)

Только один вопрос, почему же всё таки:
C#
1
2
char c = '‰';
Console.WriteLine(c);
В результате выдаёт %?
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
12.09.2018, 15:08
Цитата Сообщение от wthorn Посмотреть сообщение
Только один вопрос, почему же всё таки:
C#
1
2
3
            char c = '‰';
            Console.OutputEncoding = System.Text.Encoding.UTF8;
            Console.WriteLine(c);
1
0 / 0 / 1
Регистрация: 23.04.2017
Сообщений: 17
12.09.2018, 15:11
Цитата Сообщение от КОП Посмотреть сообщение
C#
1
2
3
char c = '‰';
Console.OutputEncoding = System.Text.Encoding.UTF8;
Console.WriteLine(c);
Так и думал что кодировка. Спасибо!
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
12.09.2018, 15:25
wthorn, потому что консоль
Цитата Сообщение от wthorn Посмотреть сообщение
почему же всё таки
...
В результате выдаёт %?
Консоль использует по умолчанию OEM кодировку зависящую от системных настроек. В русской Windows это будет DOS кодировка - кодовая страница 866. В этой кодировке нет символа промилле и он транслируется в ближайший по схожести символ. Нужно установить выходную кодировку консоли - КОП уже показал как - и изменить шрифт консоли на Unicode вариант.
1
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
12.09.2018, 17:22
Цитата Сообщение от be1l Посмотреть сообщение
аналог ord
В современном мире смысл этой функции слегка дискредитирован. Чем и подтверждает тот же PHP.
Код в какой кодировке? а почему в этой, а не в другой?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
       static void Main(string[] args)
        {
            var b = 'А';
            //var b = '‰';
            var a = Ord(b);
            Console.WriteLine("Ord равен " + Ord(b));
            Console.WriteLine("FromUtf8 равен " + FromUtf8(b));
            Console.WriteLine("FromUnicode равен " + FromUnicode(b));
            Console.WriteLine("FromCP866 равен " + FromCP866(b));
            Console.WriteLine("FromCP1251 равен " + FromCP1251(b));
            Console.ReadKey();
        }
 
        private static int Ord(char b)
        {
            return (int)b;
        }
        private static int FromUtf8(char b)
        {
            var buf = new byte[4];
            Encoding.UTF8.GetBytes(new char[] { b }).CopyTo(buf, 0);
            return BitConverter.ToInt32(buf, 0);
        }
        private static int FromUnicode(char b)
        {
            var buf = new byte[4];
            Encoding.Unicode.GetBytes(new char[] { b }).CopyTo(buf, 0);
            return BitConverter.ToInt32(buf, 0);
        }
        private static int FromCP866(char b)
        {
            var buf = new byte[4];
            Encoding.GetEncoding(866).GetBytes(new char[] { b }).CopyTo(buf, 0);
            return BitConverter.ToInt32(buf, 0);
        }
        private static int FromCP1251(char b)
        {
            var buf = new byte[4];
            Encoding.GetEncoding(1251).GetBytes(new char[] { b }).CopyTo(buf, 0);
            return BitConverter.ToInt32(buf, 0);
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.09.2018, 17:22
Помогаю со студенческими работами здесь

Переведите пожалуйста код с Pascal на C# (удаление символа)
var s:string; c:char; begin readln(s,c); while pos(c,s)&lt;&gt;0 do delete(s,pos(c,s),1); writeln(s) end.

Чем заменить функцию ord: qq:= ord(s[i+1])?
const n= 3; var a:array of string; c:integer; s:string; var i,j: integer; function qq(s:string):integer; var...

Пусть G-группа и x,y из G таковы, что xy=yx и gcd(ord x,ord y)=1. Доказать, что (x,y)=(xy)
Здравствуйте! Пусть G-группа и x,y из G таковы, что xy=yx и gcd(ord x,ord y)=1. Доказать, что (x,y)=(xy).

Есть ли аналог модуля tpdate.tpu (Turbo Pascal) для Free Pascal
Внимание! Нужно срочно узнать название юнита для freepascal, который выполняет функции tpdate.tpu для турбопаскаля!!! Помогите!!!

Дано 2 символа. Верно ли, что код только одного символа кратен 3
помогите решить задачу: дано 2 символа. верно ли , что код только одного символа кратен 3 вот мое решение, исправьте, если есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru