发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
数据类型有很多种,数据类型间的转换也是有很多的方法,如果不细心整理的话等到用的时候再查就会显得很浪费时间,所以决心整理出这篇博文。主要是讲解常用数据类型之间的转换方法以及常见数据类型所占字节数。
字节数据类型与其它数据类型间的转换方法主要放在BitConverter类中:
http://msdn.microsoft.com/zh-cn/library/system.bitconverter%28v=vs.100%29.aspx
其它数据类型转换为字节类型主要通过重载GetBytes()方法返回字节类型数组。
但是字符串类型根据编码方式的不同返回的字节类型不同,所以字符串类型的转换通过Encoding类中的GetBytes()方法返回字节数组。
关于占用字节情况的注意:
布尔类型占用一个字节,虽然布尔类型只用一比特就能表示但是还是需要占用一个字节,度娘说最小的存储单元是一字节。
字符类型在C#中占用二字节,代表一个Unicode字符,Marshal.SizeOf((typeof(char)); 得到的是非托管类型的大小(占用一字节)。在测试中会发现存入数字就是一个字节,存入数组就是两个字节。
还有不要误会啊,字符串类型是没有固定长度的,是在实际使用中根据实际情况确定长度的。
下面测试代码:
//定义变量并初始化
byte
[] Test_byte =
new
[] { 0, 1, 2, 3 };
[] Temp_byte;
bool
Test_bool;
int
Test_int;
float
Test_float;
char
Test_char;
string
Test_string;
//byte 2 bool
//返回由字节数组中指定位置的一个字节转换来的布尔值。
//public static bool ToBoolean(byte[] value, int startIndex);
Test_bool = BitConverter.ToBoolean(Test_byte, 1);
Console.WriteLine(
"bool is: {0}"
, Test_bool.ToString());
//bool 2 byte
//以字节数组的形式返回指定的布尔值。
//public static byte[] GetBytes(bool value);
Temp_byte = BitConverter.GetBytes(Test_bool);
"bool length is: {0}"
, Temp_byte.Length);
//byte 2 int
//返回由字节数组中指定位置的四个字节转换来的 32 位有符号整数。
//public static int ToInt32(byte[] value, int startIndex);
Test_int = BitConverter.ToInt32(Test_byte, 0);
"int is: {0}"
, Test_int);
//int 2 byte
//以字节数组的形式返回指定的 32 位有符号整数值。
//public static byte[] GetBytes(int value);
Temp_byte = BitConverter.GetBytes(Test_int);
"int length is: {0}"
//byte 2 float
//返回由字节数组中指定位置的四个字节转换来的单精度浮点数。
//public static float ToSingle(byte[] value, int startIndex);
Test_float = BitConverter.ToSingle(Test_byte, 0);
"float is: {0}"
, Test_float);
//float 2 byte
//以字节数组的形式返回指定的单精度浮点值。
//public static byte[] GetBytes(float value);
Temp_byte = BitConverter.GetBytes(Test_float);
"float length is: {0}"
//byte 2 char
//返回由字节数组中指定位置的两个字节转换来的 Unicode 字符。
//public static char ToChar(byte[] value, int startIndex);
Test_char = BitConverter.ToChar(Test_byte, 0);
"char is: {0}"
, Test_char);
//char 2 byte
//以字节数组的形式返回指定的 Unicode 字符值。
//public static byte[] GetBytes(char value);
Temp_byte = BitConverter.GetBytes(Test_char);
"char length is: {0}"
//byte 2 string
//将指定的字节子数组的每个元素的数值转换为它的等效十六进制字符串表示形式。
//public static string ToString(byte[] value, int startIndex);
Test_string = BitConverter.ToString(Test_byte, 0);
"string is: {0}"
, Test_string);
//string 2 byte
//在派生类中重写时,将指定的 System.String 中的所有字符编码为一个字节序列。
//public virtual byte[] GetBytes(string s);
Temp_byte = Encoding.Default.GetBytes(Test_string);
"string length is: {0}"
//char test
Test_c1 =
'人'
;
Test_c2 =
'1'
Temp_byte = BitConverter.GetBytes(Test_c1);
"Byte characters occupy is: {0}"
Temp_byte = BitConverter.GetBytes(Test_c2);
"Byte digital occupy is: {0}"
//string test
Test_str1 =
"人"
Test_str2 =
"1"
Temp_byte = Encoding.Default.GetBytes(Test_str1);
Temp_byte = Encoding.Default.GetBytes(Test_str2);
将一个基本数据类型转换为另一个基本数据类型Convert类:
http://msdn.microsoft.com/zh-cn/library/system.convert_methods%28v=vs.100%29.aspx
区别,以数值8为例:
BitConverter.GetBytes();//以字节数组的形式返回指定的 32 位有符号整数值。
返回的是字节数组,也就是数值33的存储形式:00000000 00000000 00000000 00001000 ,在调试中十进制显示:0 0 0 8
Convert.ToByte();//将指定的 32 位有符号整数的值转换为等效的 8 位无符号整数。
返回的是字节,也就是把数值8转换为字节类型的8了:00001000 ,在调试中十进制显示为:8
来自: 昵称10504424 > 《工作》
0条评论
发表
请遵守用户 评论公约
C# 如何将一个字符串转换成字节数组”与“如何将一个字节数组转换成一个字符串
C# 如何将一个字符串转换成字节数组”与“如何将一个字节数组转换成一个字符串“如何将一个字符串转换成字节数组”与“如何将一个字节数组转换成一个字符串”两者使用的时机视数据内容而定,您必须根据...
如何:使用数据保护
Protect method while passing an array of bytes to encrypt, the entropy, and the data protection scope." xml:space="preserve">调用静态 Protect 方法,同时传递要加密的字节...
c#FileStream文件读写(转)
c#FileStream文件读写(转)字符数据易于使用,但是有些操作,比如随机文件访问(访问文件中间某点的数据),就必须由FileStream对象执行,稍后对此进行介绍。FileStream类维护内部文件指针,该指针指向文...
C#指针操作Marshal实例
//从source数组的startIndex下标开始复制length个对象到ptr; Marshal.Copy(b,0,pt+0,b.Length); //从ptr复制length个对象到目标数组的,...
Socket传输大文件(发送与接收)
.NET基础拾遗(3)字符串、集合和流-(上)
NET基础拾遗(3)字符串、集合和流-(上)此外,StringBuilder内部还有一个同为StringBuilder类型的m_ChunkPrevious,它是内部的一个St...
C#入门——输入输出语句、变量、变量本质、变量命名规范
C#入门——输入输出语句、变量、变量本质、变量命名规范。namespace lesson2_变量练习题{ class Program { static void Main(string[] args) { #region 习题1 //下面代码的输出结果是 36.6 double num ...
C#读写txt文件的两种方法介绍
//byData传进来的字节数组,用以接受FileStream对象中的数据,第2个参数是字节数组中开始写入数据的位置,它通常是0,表示从数组的开端文件中向数组写数据,最后一个参数规定从文件读多少字符. Decoder d = ...
WebClient的详细用法
WebClient的详细用法提供向 URI 标识的资源发送数据和从 URI 标识的资源接收数据的公共方法。WebClient 类提供向 URI 标识的任何本地、Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共...
微信扫码,在手机上查看选中内容