C#常用类型所占字节及不同编码格式下所占字节
1.类型及所占字节数
bool -> System.Boolean (布尔型,其值为 true 或者 false)
byte -> System.Byte (字节型,占 1 字节,表示 8 位正整数,范围 0 ~ 255)
sbyte -> System.SByte (带符号字节型,占 1 字节,表示 8 位整数,范围 -128 ~ 127)
char -> System.Char (字符型,占有两个字节,表示 1 个 Unicode 字符)
short -> System.Int16 (短整型,占 2 字节,表示 16 位整数,范围 -32,768 ~ 32,767)
ushort -> System.UInt16 (无符号短整型,占 2 字节,表示 16 位正整数,范围 0 ~ 65,535)
uint -> System.UInt32 (无符号整型,占 4 字节,表示 32 位正整数,范围 0 ~ 4,294,967,295)
int -> System.Int32 (整型,占 4 字节,表示 32 位整数,范围 -2,147,483,648 到 2,147,483,647)
float -> System.Single (单精度浮点型,占 4 个字节)
ulong -> System.UInt64 (无符号长整型,占 8 字节,表示 64 位正整数,范围 0 ~ 大约 10 的 20 次方)
long -> System.Int64 (长整型,占 8 字节,表示 64 位整数,范围大约 -(10 的 19) 次方 到 10 的 19 次方)
double -> System.Double (双精度浮点型,占8 个字节)
2.不同编码下的字节数
string str = "12AB号";
Console.WriteLine("length: "+str.Length);//5个字符
byte[] bytes = Encoding.Default.GetBytes(str);//6字节,数字1个,中文2个
Console.WriteLine("Default :" + bytes.Length + " " + Encoding.Default.GetString(bytes));
bytes = Encoding.ASCII .GetBytes(str);//ASCII都是1个字节长度,不能编码中文, 号--?
Console.WriteLine("ASCII :" + bytes.Length + " " + Encoding.ASCII.GetString(bytes));
bytes = Encoding.Unicode.GetBytes(str);//10字节,每个char 2个字节
Console.WriteLine("Unicode :" + bytes.Length + " " + Encoding.Unicode.GetString(bytes));
bytes = Encoding.UTF8.GetBytes(str);//7字节 数字、英文字母,1个字节。大部分中文3字节
Console.WriteLine("UTF8 :" + bytes.Length + " " + Encoding.UTF8.GetString(bytes));
bytes = Encoding.UTF32.GetBytes(str);//20字节 每个char 4个字节
Console.WriteLine("UTF32 :" + bytes.Length + " " + Encoding.UTF32.GetString(bytes));