Byte/ru
Deutsch · English · Español · Français · Italiano · Suomi · Русский · 中文(中国)
Тип 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.
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.