Difference between revisions of "Byte/ru"
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
{{Byte}} | {{Byte}} | ||
− | Тип <syntaxhighlight lang="pascal" | + | Тип <syntaxhighlight lang="pascal" inline>byte</syntaxhighlight> (байт) является беззнаковым [[Integer/ru|<syntaxhighlight lang="pascal" inline>integer</syntaxhighlight>]] (целым) типом, представляющим значения в диапазоне <syntaxhighlight lang="pascal" inline>0..255</syntaxhighlight> и занимающим '''8 бит'''. Типы <syntaxhighlight lang="pascal" inline>byte</syntaxhighlight> и [[Char/ru|<syntaxhighlight lang="pascal" inline>char</syntaxhighlight>]] являются одним и тем же в [[FPC]] версии 3. |
== Корректные значения == | == Корректные значения == | ||
− | Ключевое отличие состоит в том, что <syntaxhighlight lang="pascal" | + | Ключевое отличие состоит в том, что <syntaxhighlight lang="pascal" inline>byte</syntaxhighlight> может использоваться только в качестве числового [[Type/ru|<syntaxhighlight lang="pascal" inline>type</syntaxhighlight>]](типа), тогда как <syntaxhighlight lang="pascal" inline>char</syntaxhighlight> может использоваться как символ или как часть строкового типа и не может использоваться в арифметическом выражении. <syntaxhighlight lang="pascal" inline>byte</syntaxhighlight> всегда будет иметь тот же размер, что и [[AnsiChar/ru|<syntaxhighlight lang="pascal" inline>ansiChar</syntaxhighlight>]], но в будущем <syntaxhighlight lang="pascal" inline>char</syntaxhighlight> может считаться синонимом [[WideChar|<syntaxhighlight lang="pascal" inline>wideChar</syntaxhighlight>]], а не [[AnsiChar/ru|<syntaxhighlight lang="pascal" inline>ansiChar</syntaxhighlight>]]. |
Например: | Например: | ||
Line 17: | Line 17: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | Использование типов данных <syntaxhighlight lang="pascal" | + | Использование типов данных <syntaxhighlight lang="pascal" inline>byte</syntaxhighlight> или <syntaxhighlight lang="pascal" inline>byte</syntaxhighlight> обеспечивает лучшую документированность при работе с конкретными переменными. |
== Стандартные функции == | == Стандартные функции == | ||
=== Преобразование в символ и из него === | === Преобразование в символ и из него === | ||
− | Тип <syntaxhighlight lang="pascal" | + | Тип <syntaxhighlight lang="pascal" inline>byte</syntaxhighlight> может быть [[coercion|приведен]] к типу <syntaxhighlight lang="pascal" inline>char</syntaxhighlight> с помощью [[Chr/ru|функции <syntaxhighlight lang="pascal" inline>chr</syntaxhighlight>]]. Значения типа <syntaxhighlight lang="pascal" inline>chr</syntaxhighlight> могут быть приведены к типу <syntaxhighlight lang="pascal" inline>byte</syntaxhighlight> с помощью [[Ord/ru|функции <syntaxhighlight lang="pascal" inline>ord</syntaxhighlight>]]. |
Исправленный вариант приведенной выше программы: | Исправленный вариант приведенной выше программы: | ||
Line 51: | Line 51: | ||
=== Строковое представление === | === Строковое представление === | ||
− | + | Функцию {{Doc|package=RTL|unit=system|identifier=binstr|text=<syntaxhighlight lang="pascal" inline>binStr</syntaxhighlight> function}} из модуля [[System unit|<syntaxhighlight lang="pascal" inline>system</syntaxhighlight>]] можно использовать для получения [[String/ru|<syntaxhighlight lang="pascal" inline>string</syntaxhighlight>]] (строки), показывающей [[Binary_numeral_system/ru|двоичное представление]] <syntaxhighlight lang="pascal" inline>byte</syntaxhighlight>: | |
<syntaxhighlight lang="pascal"> | <syntaxhighlight lang="pascal"> | ||
− | + | program binStrDemo(input, output, stderr); | |
var | var | ||
− | + | foo: byte; | |
begin | begin | ||
− | + | foo := 10; | |
+ | writeLn(binStr(foo, 8)); | ||
end. | end. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
Выведет: | Выведет: | ||
+ | <syntaxhighlight lang="text"> | ||
+ | 00001010 | ||
+ | </syntaxhighlight> | ||
− | + | Более универсальной функцией является {{Doc|package=RTL|unit=strutils|identifier=inttobin|text=<syntaxhighlight lang="pascal" inline>intToBin</syntaxhighlight>}}, предоставляемая модулем <syntaxhighlight lang="pascal" inline>strUtils</syntaxhighlight>. | |
{{Data types/ru}} | {{Data types/ru}} |
Latest revision as of 17:22, 6 August 2022
│
Deutsch (de) │
English (en) │
español (es) │
suomi (fi) │
français (fr) │
italiano (it) │
русский (ru) │
中文(中国大陆) (zh_CN) │
Тип byte
(байт) является беззнаковым integer
(целым) типом, представляющим значения в диапазоне 0..255
и занимающим 8 бит. Типы byte
и char
являются одним и тем же в FPC версии 3.
Корректные значения
Ключевое отличие состоит в том, что byte
может использоваться только в качестве числового type
(типа), тогда как char
может использоваться как символ или как часть строкового типа и не может использоваться в арифметическом выражении. byte
всегда будет иметь тот же размер, что и ansiChar
, но в будущем char
может считаться синонимом wideChar
, а не ansiChar
.
Например:
var
c: byte;
ch: char;
begin
c := 65; ch := 'A'; { одинаковые и допустимые действия }
c := 'A'; ch := 65; { в то время как эти действия также одинаковы, но недопустимы }
end.
Использование типов данных byte
или byte
обеспечивает лучшую документированность при работе с конкретными переменными.
Стандартные функции
Преобразование в символ и из него
Тип byte
может быть приведен к типу char
с помощью функции chr
. Значения типа chr
могут быть приведены к типу byte
с помощью функции ord
.
Исправленный вариант приведенной выше программы:
program ordChrDemo(input, output, stderr);
var
foo: byte;
bar: char;
begin
foo := 65;
bar := 'A';
foo := ord('A');
// chr(65) это эквивалент #65
bar := chr(65);
bar := #65;
// альтернатива: приведения типов
// приведения типов константных выражений
// гарантированно произойдет во время компиляции
foo := byte('A');
bar := char(65);
end.
Строковое представление
Функцию binStr
function из модуля system
можно использовать для получения string
(строки), показывающей двоичное представление byte
:
program binStrDemo(input, output, stderr);
var
foo: byte;
begin
foo := 10;
writeLn(binStr(foo, 8));
end.
Выведет:
00001010
Более универсальной функцией является intToBin
, предоставляемая модулем strUtils
.
Типы данных | |
---|---|
Простые типы | Boolean | Byte | Cardinal | Char | Currency | Extended | Int64 | Integer | Longint | Pointer | Real | Shortint | Smallint | Word |
Сложные типы | Array | Class | Record | Set | String | Shortstring |