Sign in Join
Wiki copytemporary

Byte/ru: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Byte/ru

OldNewLine
1+Тип `byte` (байт) является беззнаковым [[Integer/ru|integer]] (целым) типом, представляющим значения в диапазоне `0..255` и занимающим **8 бит**. Типы `byte` и [[Char/ru|char]] являются одним и тем же в [[FPC]] версии 3.
2+
3+## Корректные значения
4+
5+Ключевое отличие состоит в том, что `byte` может использоваться только в качестве числового [[Type/ru|type]](типа), тогда как `char` может использоваться как символ или как часть строкового типа и не может использоваться в арифметическом выражении. `byte` всегда будет иметь тот же размер, что и [[AnsiChar/ru|ansiChar]], но в будущем `char` может считаться синонимом [[WideChar|wideChar]], а не [[AnsiChar/ru|ansiChar]].
6+
7+Например:
8+
9+``` pascal
10+var
11+ c: byte;
12+ ch: char;
13+begin
14+ c := 65; ch := 'A'; { одинаковые и допустимые действия }
15+ c := 'A'; ch := 65; { в то время как эти действия также одинаковы, но недопустимы }
16+end.
17+```
18+
19+Использование типов данных `byte` или `byte` обеспечивает лучшую документированность при работе с конкретными переменными.
20+
21+## Стандартные функции
22+
23+### Преобразование в символ и из него
24+
25+Тип `byte` может быть [[coercion|приведен]] к типу `char` с помощью [[Chr/ru|функции chr]]. Значения типа `chr` могут быть приведены к типу `byte` с помощью [[Ord/ru|функции ord]].
26+
27+Исправленный вариант приведенной выше программы:
28+
29+``` pascal
30+program ordChrDemo(input, output, stderr);
31+var
32+ foo: byte;
33+ bar: char;
34+
35+begin
36+ foo := 65;
37+ bar := 'A';
38+
39+ foo := ord('A');
40+ // chr(65) это эквивалент #65
41+ bar := chr(65);
42+ bar := #65;
43+
44+ // альтернатива: приведения типов
45+ // приведения типов константных выражений
46+ // гарантированно произойдет во время компиляции
47+ foo := byte('A');
48+ bar := char(65);
49+end.
50+```
51+
52+### Строковое представление
53+
54+Функцию [`binStr` function](https://www.freepascal.org/docs-html/rtl/system/binstr.html) из модуля [[System unit|system]] можно использовать для получения [[String/ru|string]] (строки), показывающей [[Binary numeral system/ru|двоичное представление]] `byte`:
55+
56+``` pascal
57+program binStrDemo(input, output, stderr);
58+
59+var
60+ foo: byte;
61+
62+begin
63+ foo := 10;
64+ writeLn(binStr(foo, 8));
65+end.
66+```
67+
68+Выведет:
69+
70+```text
71+00001010
72+```
73+
74+Более универсальной функцией является [`intToBin`](https://www.freepascal.org/docs-html/rtl/strutils/inttobin.html), предоставляемая модулем `strUtils`.
75+
76+---
77+*From the Free Pascal wiki, page "Byte/ru", as it stood on 2022-08-06 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history