Difference between revisions of "Byte/ru"

From Lazarus wiki
Jump to navigationJump to search
Line 19: Line 19:
 
Использование типов данных <syntaxhighlight lang="pascal" enclose="none">byte</syntaxhighlight> или <syntaxhighlight lang="pascal" enclose="none">byte</syntaxhighlight> обеспечивает лучшую документированность при работе с конкретными переменными.
 
Использование типов данных <syntaxhighlight lang="pascal" enclose="none">byte</syntaxhighlight> или <syntaxhighlight lang="pascal" enclose="none">byte</syntaxhighlight> обеспечивает лучшую документированность при работе с конкретными переменными.
  
== standard functions ==
+
== Стандартные функции ==
=== conversion to and from character ===
+
=== Преобразование в символ и из него ===
  
Тип '''byte''' может быть [[coercion|приведен]] к типу '''char''' с помощью функции '''[[Chr/ru|chr]]'''. Значения типа '''Char''' могут быть приведены к типу '''byte''' с помощью функции '''[[Ord/ru|ord]]'''.
+
Тип <syntaxhighlight lang="pascal" enclose="none">byte</syntaxhighlight> может быть [[coercion|приведен]] к типу <syntaxhighlight lang="pascal" enclose="none">char</syntaxhighlight> с помощью [[Chr/ru|функции <syntaxhighlight lang="pascal" enclose="none">chr</syntaxhighlight>]]. Значения типа <syntaxhighlight lang="pascal" enclose="none">chr</syntaxhighlight> могут быть приведены к типу <syntaxhighlight lang="pascal" enclose="none">byte</syntaxhighlight> с помощью [[Ord/ru|функции <syntaxhighlight lang="pascal" enclose="none">ord</syntaxhighlight>]].
  
 
Исправленный вариант приведенной выше программы:
 
Исправленный вариант приведенной выше программы:
  
 
<syntaxhighlight lang="pascal">
 
<syntaxhighlight lang="pascal">
 +
program ordChrDemo(input, output, stderr);
 
var
 
var
  c: byte;  
+
foo: byte;
  ch: char;
+
bar: char;
 +
 
 
begin
 
begin
  c := 65; ch := 'A'; { одинаковые и допустимые действия }
+
foo := 65;
  c := ord('A'); ch := Chr(65); { теперь допустимо ... ch := Chr(65); это равносильно ch := #65}
+
bar := 'A';
  c := Byte('A'); ch := Char(65); { также допустимо и гарантированно выполнится при компиляции }
+
 +
foo := ord('A');
 +
// chr(65) это эквивалент #65
 +
bar := chr(65);
 +
bar := #65;
 +
 +
        // альтернатива: приведения типов
 +
        // приведения типов константных выражений
 +
        // гарантированно произойдет во время компиляции
 +
foo := byte('A');
 +
bar := char(65);
 
end.
 
end.
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
=== Строковое представление ===
  
 
Функция [[doc:rtl/strutils/inttobin.html|IntToBin]] из модуля [[doc:rtl/strutils/index-5.html|StrUtils]] может использоваться для получения строки, отображающей  [[Binary_numeral_system/ru|двоичное представление]] байта:
 
Функция [[doc:rtl/strutils/inttobin.html|IntToBin]] из модуля [[doc:rtl/strutils/index-5.html|StrUtils]] может использоваться для получения строки, отображающей  [[Binary_numeral_system/ru|двоичное представление]] байта:

Revision as of 13:08, 29 April 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.

Строковое представление

Функция IntToBin из модуля StrUtils может использоваться для получения строки, отображающей двоичное представление байта:

uses StrUtils;

var
   a_byte : Byte = 10;

begin
   Writeln(IntToBin(a_byte,8));
end.

Выведет:

00001010

Типы данных
Простые типы Boolean | Byte | Cardinal | Char | Currency | Extended | Int64 | Integer | Longint | Pointer | Real | Shortint | Smallint | Word
Сложные типы Array | Class | Record | Set | String | Shortstring