C# Numeric Types

Reference Tables for Types (C# Reference)

Numeric literals

binary literals

var b = 0b0001;

literals 可以使用 digit separator,它可以出现在任意位置,十进制通常使用千分位

var sixteen = 0b0001_0000;
int i = 100_000_000_000;
double d = 3.141_592_653

#

Console.WriteLine(1 / 1000);
Console.WriteLine((float)1 / 1000);

转换

字符串转换为数字,以 int 为例

在转换时先去掉字符串头尾的空白,中间的空白将导致转换失败。

Console.WriteLine(int.Parse("-105"));
Console.WriteLine(float.Parse("10e1"));

TryParse 第二个参数使用 out 修饰符

var result = int.TryParse("10e1", out int i); // 同时声明 i
Console.WriteLine($"{result} {i}");

bytes

byte array 转为 int

byte[] bytes = byte[] bytes = { 0, 0, 0, 25 };
// 如果系统架构是 little-endian,先颠倒
if (BitConverter.IsLittleEndian)
    Array.Reverse(bytes);
int i = BitConverter.ToInt32(bytes, 0);
Console.WriteLine(i);

int 转为 byte array

byte[] bytes = BitConverter.GetBytes(123);
Console.WriteLine("byte array: " + BitConverter.ToString(bytes));