Как конвертировать в c
Перейти к содержимому

Как конвертировать в c

  • автор:

Преобразование данных

Эти процедуры позволяют преобразовывать данные из одной формы в другую. Обычно эти процедуры выполняются быстрее, чем создаваемые вами преобразования. Каждая процедура, которая начинается с префикса to , реализуется и как функция, и как макрос. Сведения о выборе реализации см. в Рекомендации выбора функций и макросов.

Подпрограммы преобразования данных

Маршрут Использование
abs Находит абсолютное значение целого числа
atof , _atof_l Преобразуют строку в float
atoi , _atoi_l Преобразуют строку в int
_atoi64 , _atoi64_l Преобразование строки в __int64 или long long
atol , _atol_l Преобразуют строку в long
c16rtomb , c32rtomb Преобразуют символ UTF-16 или UTF-32 в эквивалентный многобайтовый символ
_ecvt , _ecvt_s Преобразуют double в строку символов указанной длины
_fcvt , _fcvt_s Преобразование double в строку с указанным количеством цифр после десятичной запятой
_gcvt , _gcvt_s Преобразуют число double в строку и сохраняют эту строку в буфер
_itoa , _ltoa , _ultoa , _i64toa , _ui64toa , _itow , _ltow , ultow , _i64tow , _ui64tow , _itoa_s , _ltoa_s , _ultoa_s , _i64toa_s , _ui64toa_s , _itow_s , _ltow_s , _ultow_s , _i64tow_s , _ui64tow_s Преобразуют целочисленные типы в строку
labs Находят абсолютное значение целого числа long
llabs Находят абсолютное значение целого числа long long
_mbbtombc , _mbbtombc_l Преобразуют однобайтовый многобайтовый символ в соответствующий двухбайтовый многобайтовый символ
_mbcjistojms , _mbcjistojms_l , _mbcjmstojis , _mbcjmstojis_l Преобразуют символ из стандарта Japan Industry Standard (JIS) в стандарт Japan Microsoft (JMS)
_mbcjistojms , _mbcjistojms_l , _mbcjmstojis , _mbcjmstojis_l Преобразуют символ из стандарта JMS в стандарт JIS
_mbctohira , _mbctohira_l , _mbctokata , _mbctokata_l Преобразуют многобайтовый символ в однобайтовый код хираганы
_mbctohira , _mbctohira_l , _mbctokata , _mbctokata_l Преобразуют многобайтовый символ в однобайтовый код катаканы
_mbctombb , _mbctombb_l Преобразуют двухбайтовый многобайтовый символ в соответствующий однобайтовый многобайтовый символ
mbrtoc16 , mbrtoc32 Преобразуют многобайтовый символ в эквивалентный символ UTF-16 или UTF-32
mbstowcs , _mbstowcs_l , mbstowcs_s , _mbstowcs_s_l Преобразовать последовательность многобайтовых символов в соответствующую последовательность расширенных символов.
mbtowc , _mbtowc_l Преобразовать многобайтовый символ в соответствующий расширенный символ.
strtod , _strtod_l , wcstod , _wcstod_l Преобразуют строку в double
strtol , wcstol , _strtol_l , _wcstol_l Преобразуют строку в целое число long
strtoul , _strtoul_l , wcstoul , _wcstoul_l Преобразуют строку в целое число unsigned long
strxfrm , wcsxfrm , _strxfrm_l , _wcsxfrm_l Преобразуют строку в упорядоченную форму, основываясь на данных языкового стандарта
toascii , __toascii Преобразуют символ в код ASCII
tolower , _tolower , towlower , _tolower_l , _towlower_l , _mbctolower , _mbctolower_l , _mbctoupper , _mbctoupper_l Проверяют символ и преобразуют его в нижний регистр, если это символ верхнего регистра
tolower , _tolower , towlower , _tolower_l , _towlower_l Преобразуют символ в нижний регистр без дополнительных условий
toupper , _toupper , towupper , _toupper_l , _towupper_l , _mbctolower , _mbctolower_l , _mbctoupper , _mbctoupper_l Проверяют символ и преобразуют его в верхний регистр, если это символ нижнего регистра
toupper , _toupper , towupper , _toupper_l , _towupper_l Преобразуют символ в верхний регистр без дополнительных условий
wcstombs , _wcstombs_l , wcstombs_s , _wcstombs_s_l Преобразовать последовательность расширенных символов в соответствующую последовательность многобайтовых символов
wctomb , _wctomb_l , wctomb_s , _wctomb_s_l Преобразовать расширенный символ в соответствующий многобайтовый символ
_wtof , _wtof_l Преобразуют строку расширенных символов в double
_wtoi , _wtoi_l Преобразуют строку расширенных символов в int
_wtoi64 , _wtoi64_l Преобразование строки с широким символом в __int64 или long long
_wtol , _wtol_l Преобразуют строку расширенных символов в long

См. также

Обратная связь

Были ли сведения на этой странице полезными?

Конвертация из Фаренгейта в Цельсия

0 градусов по Фаренгейту равно -17,77778 градусам Цельсия:

0 ° F = -17,77778 ° C

Температура T в градусах Цельсия (° C) равна температуре T в градусах Фаренгейта (° F) минус 32, умноженная на 5/9:

пример

Преобразовать 68 градусов по Фаренгейту в градусы Цельсия:

Т (° C) = (68 ° F — 32) × 5/9 = 20 ° C

Таблица перевода Фаренгейта в Цельсия

Фаренгейт (° F) Цельсия (° C) Описание
-459,67 ° F -273,15 ° С абсолютная нулевая температура
-50 ° F -45,56 ° С
-40 ° F -40,00 ° С
-30 ° F -34,44 ° С
-20 ° F -28,89 ° С
-10 ° F -23,33 ° С
0 ° F -17,78 ° С
10 ° F -12,22 ° С
20 ° F -6,67 ° С
30 ° F -1,11 ° С
32 ° F 0 ° C температура замерзания / плавления воды
40 ° F 4,44 ° С
50 ° F 10,00 ° С
60 ° F 15,56 ° С
70 ° F 21,11 ° С комнатная температура
80 ° F 26,67 ° С
90 ° F 32,22 ° С
98,6 ° F 37 ° С средняя температура тела
100 ° F 37,78 ° С
110 ° F 43,33 ° С
120 ° F 48,89 ° С
130 ° F 54,44 ° С
140 ° F 60,00 ° С
150 ° F 65,56 ° С
160 ° F 71,11 ° С
170 ° F 76,67 ° С
180 ° F 82,22 ° С
190 ° F 87,78 ° С
200 ° F 93,33 ° С
212 ° F 100 ° C точка кипения воды
300 ° F 148,89 ° С
400 ° F 204,44 ° С
500 ° F 260,00 ° С
600 ° F 315,56 ° С
700 ° F 371,11 ° С
800 ° F 426,67 ° С
900 ° F 482,22 ° С
1000 ° F 537,78 ° С

Смотрите также

  • Как преобразовать градусы Фаренгейта в Цельсия
  • Конвертер Цельсия в Фаренгейт
  • Конвертер Фаренгейта в Кельвин
  • Конвертер Фаренгейта в Ренкин
  • 350 по Фаренгейту в Цельсия
  • Электрическое преобразование
  • Преобразование мощности

Руководство по программированию на C#. Приведение и преобразование типов

Так как C# статически типируется во время компиляции, после объявления переменной его нельзя объявить еще раз или назначить значение другого типа, если этот тип неявно преобразуется в тип переменной. Например, string невозможно неявно преобразовать в int . Таким образом, после объявления i как не int удается назначить строку Hello, как показано в следующем коде:

int i; // error CS0029: can't implicitly convert type 'string' to 'int' i = "Hello"; 

Тем не менее иногда может потребоваться скопировать значение в переменную или параметр метода другого типа. Например, может потребоваться передать целочисленную переменную в метод, параметр которого имеет тип double . Или может понадобиться присвоить переменную класса переменной типа интерфейса. Такого рода операции называются преобразованиями типа. В C# можно выполнять следующие виды преобразований.

  • Неявные преобразования: специальный синтаксис не требуется, так как преобразование всегда выполняется успешно, и данные не теряются. Примеры включают преобразования из меньших в большие целочисленные типы и преобразования из производных классов в базовые классы.
  • Явные преобразования (приведения): для явных преобразований требуется выражение приведения. Приведение требуется, если в ходе преобразования данные могут быть утрачены или преобразование может завершиться сбоем по другим причинам. Типичными примерами являются числовое преобразование в тип с меньшей точностью или меньшим диапазоном и преобразование экземпляра базового класса в производный класс.
  • Определяемые пользователем преобразования: определяемые пользователем преобразования используют специальные методы, которые можно определить, чтобы включить явные и неявные преобразования между пользовательскими типами, у которых нет связи на основе базового класса. Дополнительные сведения см. в разделе Операторы пользовательского преобразования.
  • Преобразования с использованием вспомогательных классов. Чтобы выполнить преобразование между несовместимыми типами, например целыми числами и объектами System.DateTime или шестнадцатеричными строками и массивами байтов, можно использовать классы System.BitConverter и System.Convert, а также методы Parse встроенных числовых типов, такие как Int32.Parse. Дополнительные сведения см. в руководствах по преобразованию массива байтов в значение типа int, преобразованию строки в число и преобразованию из шестнадцатеричных строк в числовые типы.

Неявные преобразования

Для встроенных числовых типов неявное преобразование можно выполнить, если сохраняемое значение может уместиться в переменной без усечения или округления. При использовании целочисленных типов это означает, что диапазон исходного типа является надлежащим подмножеством диапазона для целевого типа. Например, переменная типа long (64-разрядное целое число) может хранить любое значение, которое может хранить переменная int (32-разрядное целое число). В следующем примере компилятор неявно преобразует значение num справа в тип long перед назначением bigNum .

// Implicit conversion. A long can // hold any value an int can hold, and more! int num = 2147483647; long bigNum = num; 

Полный список всех неявных числовых преобразований см. в разделе Таблица неявных числовых преобразований в статье Встроенные числовые преобразования.

Для ссылочных типов неявное преобразование всегда предусмотрено из класса в любой из его прямых или косвенных базовых классов или интерфейсов. Никакой специальный синтаксис не требуется, поскольку производный класс всегда содержит все члены базового класса.

Derived d = new Derived(); // Always OK. Base b = d; 

Явные преобразования

Однако если преобразование невозможно сделать без риска потери информации, компилятору требуется выполнить явное преобразование, которое называется приведением . Приведение — это способ явного информирования компилятора о том, что вы планируете выполнить преобразование и что вы знаете, что потеря данных может произойти, или приведение может завершиться ошибкой во время выполнения. Чтобы выполнить приведение, укажите тип, к которому выполняется приведение в круглые скобки перед преобразуемой значением или переменной. Следующая программа приводит двойник к int. Программа не будет компилироваться без приведения.

class Test < static void Main() < double x = 1234.7; int a; // Cast double to int. a = (int)x; System.Console.WriteLine(a); >> // Output: 1234 

Полный список всех поддерживаемых явных числовых преобразований см. в разделе Таблица явных числовых преобразований в статье Встроенные числовые преобразования.

Для ссылочных типов явное приведение является обязательным, если необходимо преобразовать базовый тип в производный тип:

// Create a new derived type. Giraffe g = new Giraffe(); // Implicit conversion to base type is safe. Animal a = g; // Explicit conversion is required to cast back // to derived type. Note: This will compile but will // throw an exception at run time if the right-side // object is not in fact a Giraffe. Giraffe g2 = (Giraffe)a; 

Операция приведения между ссылочными типами не изменяет тип времени выполнения базового объекта; он изменяет только тип значения, используемого в качестве ссылки на этот объект. Дополнительные сведения см. в разделе Полиморфизм.

Исключения преобразования типов во время выполнения

В некоторых преобразованиях ссылочного типа компилятор не может определить, является ли приведение допустимым. Можно выполнить операцию приведения, которая правильно компилируется во время выполнения. Как показано в следующем примере, приведение типа, завершающееся сбоем во время выполнения, приводит InvalidCastException к возникновению ошибки.

class Animal < public void Eat() =>System.Console.WriteLine("Eating."); public override string ToString() => "I am an animal."; > class Reptile : Animal < >class Mammal : Animal < >class UnSafeCast < static void Main() < Test(new Mammal()); // Keep the console window open in debug mode. System.Console.WriteLine("Press any key to exit."); System.Console.ReadKey(); >static void Test(Animal a) < // System.InvalidCastException at run time // Unable to cast object of type 'Mammal' to type 'Reptile' Reptile r = (Reptile)a; >> 

Метод Test имеет параметр Animal , поэтому явное приведение a аргумента к Reptile формирует опасное допущение. Это безопаснее, чтобы не делать предположения, а вместо проверка тип. C# предоставляет оператор is, чтобы можно было проверить совместимость перед фактическим выполнением приведения. Дополнительные сведения см. в статье Практическое руководство. Безопасное приведение с помощью сопоставления шаблонов, а также операторов is и as.

Спецификация языка C#

См. также

  • Типы
  • Выражение приведения
  • Операторы пользовательского преобразования
  • Обобщенное преобразование типов
  • Практическое руководство. Преобразование строки в число

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Как конвертировать в c

Все примитивные типы имеют два метода, которые позволяют преобразовать строку к данному типу. Это методы Parse() и TryParse() .

Метод Parse() в качестве параметра принимает строку и возвращает объект текущего типа. Например:

int a = int.Parse("10"); double b = double.Parse("23,56"); decimal c = decimal.Parse("12,45"); byte d = byte.Parse("4"); Console.WriteLine($"a= b= c= d=");

Стоит отметить, что парсинг дробных чисел зависит от настроек текущей культуры. В частности, для получения числа double я передаю строку «23,56» с запятой в качестве разделителя. Если бы я передал точку вместо запятой, то приложение выдало ошибку выполнения. На компьютерах с другой локалью, наоборот, использование запятой вместо точки выдало бы ошибку.

Чтобы не зависеть от культурных различий мы можем установить четкий формат с помощью класса NumberFormatInfo и его свойства NumberDecimalSeparator :

using System.Globalization; IFormatProvider formatter = new NumberFormatInfo < NumberDecimalSeparator = "." >; double number = double.Parse("23.56", formatter); Console.WriteLine(number); // 23,56

В данном случае в качестве разделителя устанавливается точка. Однако тем не менее потенциально при использовании метода Parse мы можем столкнуться с ошибкой, например, при передачи алфавитных символов вместо числовых. И в этом случае более удачным выбором будет применение метода TryParse() . Он пытается преобразовать строку к типу и, если преобразование прошло успешно, то возвращает true . Иначе возвращается false:

Console.WriteLine("Введите строку:"); string? input = Console.ReadLine(); bool result = int.TryParse(input, out var number); if (result == true) Console.WriteLine($"Преобразование прошло успешно. Число: "); else Console.WriteLine("Преобразование завершилось неудачно");

Если преобразование пройдет неудачно, то исключения никакого не будет выброшено, просто метод TryParse возвратит false, а переменная number будет содержать значение по умолчанию.

Convert

Класс Convert представляет еще один способ для преобразования значений. Для этого в нем определены следующие статические методы:

  • ToBoolean(value)
  • ToByte(value)
  • ToChar(value)
  • ToDateTime(value)
  • ToDecimal(value)
  • ToDouble(value)
  • ToInt16(value)
  • ToInt32(value)
  • ToInt64(value)
  • ToSByte(value)
  • ToSingle(value)
  • ToUInt16(value)
  • ToUInt32(value)
  • ToUInt64(value)

В качестве параметра в эти методы может передаваться значение различных примитивных типов, необязательно строки:

int n = Convert.ToInt32("23"); bool b = true; double d = Convert.ToDouble(b); Console.WriteLine($"n= d=");

Однако опять же, как и в случае с методом Parse, если методу не удастся преобразовать значение к нужному типу, то он выбрасывает исключение FormatException.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *