Difference between revisions of "Byte/ru"

From Lazarus wiki
Jump to navigationJump to search
Line 1: Line 1:
 
{{Byte}}
 
{{Byte}}
  
Тип '''byte''' (байт)  является беззнаковым [[Integer/ru|целым]] типом, представляющим значения в диапазоне '''0 .. 255''' и занимающим '''8 бит'''. Типы '''byte''' и [[Char/ru|char]]  являются одним и тем же в Free Pascal версии 3 за исключением того, что '''byte''' может использоваться только в качестве числового [[Type/ru|типа]], а '''char''' может использоваться для символов или частей строк и не может использоваться в арифметических выражениях. Тип '''byte''' всегда будет иметь такой же размер, как и [[AnsiChar/ru|AnsiChar]]. При этом, в будущем тип '''Char''' может быть рассмотрен в качестве синонима для [[WideChar/ru|WideChar]],а не AnsiChar.
+
Тип <syntaxhighlight lang="pascal" enclose="none">byte</syntaxhighlight> (байт)  является беззнаковым [[Integer/ru|<syntaxhighlight lang="pascal" enclose="none">integer</syntaxhighlight>]] (целым) типом, представляющим значения в диапазоне <syntaxhighlight lang="pascal" enclose="none">0..255</syntaxhighlight> и занимающим '''8 бит'''. Типы <syntaxhighlight lang="pascal" enclose="none">byte</syntaxhighlight> и [[Char/ru|<syntaxhighlight lang="pascal" enclose="none">char</syntaxhighlight>]]  являются одним и тем же в [[FPC]] версии 3.
 +
 
 +
== Корректные значения ==
 +
Ключевое отличие состоит в том, что <syntaxhighlight lang="pascal" enclose="none">byte</syntaxhighlight> может использоваться только в качестве числового [[Type/ru|<syntaxhighlight lang="pascal" enclose="none">type</syntaxhighlight>]], тогда как <syntaxhighlight lang="pascal" enclose="none">char</syntaxhighlight> может использоваться как символ или как часть строкового типа и не может использоваться в арифметическом выражении. <syntaxhighlight lang="pascal" enclose="none">byte</syntaxhighlight> всегда будет иметь тот же размер, что и [[AnsiChar/ru|<syntaxhighlight lang="pascal" enclose="none">ansiChar</syntaxhighlight>]], но в будущем <syntaxhighlight lang="pascal" enclose="none">char</syntaxhighlight> может считаться синонимом [[WideChar|<syntaxhighlight lang="pascal" enclose="none">wideChar</syntaxhighlight>]], а не [[AnsiChar/ru|<syntaxhighlight lang="pascal" enclose="none">ansiChar</syntaxhighlight>]].
  
 
Например:
 
Например:
Line 14: Line 17:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Использование типов данных '''byte''' или '''char''' обеспечивает лучшую документированность при работе с конкретными переменными. Тип '''byte''' может быть [[coercion|приведен]] к типу '''char''' с помощью функции '''[[Chr/ru|chr]]'''. Значения типа '''Char''' могут быть приведены к типу '''byte''' с помощью функции '''[[Ord/ru|ord]]'''.
+
Использование типов данных <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]]'''.
  
 
Исправленный вариант приведенной выше программы:
 
Исправленный вариант приведенной выше программы:

Revision as of 12:55, 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 обеспечивает лучшую документированность при работе с конкретными переменными.

standard functions

conversion to and from character

Тип byte может быть приведен к типу char с помощью функции chr. Значения типа Char могут быть приведены к типу byte с помощью функции ord.

Исправленный вариант приведенной выше программы:

var
  c: byte; 
  ch: char;
begin
  c := 65;  ch := 'A'; { одинаковые и допустимые действия }
  c := ord('A');  ch := Chr(65); { теперь допустимо ... ch := Chr(65); это равносильно ch := #65}
  c := Byte('A'); ch := 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