工作一年多了,越来越感到自己不能这样一直下去,在最好的青春里面却已经死了。被时间消磨了意志,被工作杀死了精神。我想,我只要活着,我就要去不断的要求自己,不断的去追求更高的山峰。

放眼四周,有趣的灵魂越来越少。独立的人格也越来越稀薄。我们真的不能为了工作而去工作,那样我们活着就和死了一样。生活充满了重复性,我们不断的重复着自己所做一切,上班下班,周末休息。那样活着其实已经死了。我在这一年里面厌恶这种生活。我决定开始新的生活,制定一个计划,每天朝这个方向努力,哪怕用一年两年甚至半辈子,我也是无怨无悔。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Runtime.Serialization;
  6. using System.Runtime.Serialization.Formatters.Binary;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using Newtonsoft.Json;
  10. using System.Xml.Serialization;
  11.  
  12. namespace Test_Control
  13. {
  14. class Program
  15. {
  16. static void Main(string[] args)
  17. {
  18. Object student = new Student() { StudentID = "", StudentName = "zhang" };
  19.  
  20. string result = ObjectToString<Object>(student);
  21. Console.WriteLine(result + "\r\n");
  22.  
  23. Student newResult = StringToObject<Student>(result);
  24. Console.WriteLine("ID:{0}, Name:{1}" + "\r\n", newResult.StudentID, newResult.StudentName);
  25.  
  26. //使用UTF8编码将字符串转成byte数组
  27. var byt = SerializeHelper.ConvertToByte("12zhang3");
  28. // Console.WriteLine(BitConverter.ToString(byt));
  29.  
  30. //使用UTF8编码将byte数组转成字符串
  31. string str = SerializeHelper.ConvertToString(byt);
  32. Console.WriteLine(str);
  33.  
  34. //使用指定字符编码将byte数组转成字符串
  35. string strr = SerializeHelper.ConvertToString(byt, Encoding.Unicode);
  36. Console.WriteLine(strr);
  37.  
  38. //将对象序列化为二进制数据
  39. var obj = new Student() { StudentID = "", StudentName = "zhang" };
  40. var arr = SerializeHelper.SerializeToBinary(obj);
  41. Console.WriteLine(BitConverter.ToString(arr));
  42.  
  43. //将对象序列化为XML数据 并且打印
  44. var xml = SerializeHelper.SerializeToXml(obj);
  45. Console.WriteLine(BitConverter.ToString(xml));
  46.  
  47. //将二进制数据反序列化 并且打印
  48. var Bt = new byte[] { , , };
  49. Student obje = SerializeHelper.DeserializeWithBinary<Student>(arr);
  50. Console.WriteLine(obje.StudentName);
  51.  
  52. Console.ReadKey();
  53. }
  54.  
  55. /// <summary>
  56. /// 对象转字符串(序列化后转Base64编码字符串)
  57. /// </summary>
  58. /// <param name="obj">对象</param>
  59. /// <returns>字符串</returns>
  60. public static string ObjectToString<T>(T obj)
  61. {
  62. using (MemoryStream stream = new MemoryStream())
  63. {
  64. IFormatter formatter = new BinaryFormatter();
  65. formatter.Serialize(stream, obj);
  66. stream.Position = ;
  67. byte[] buffer = new byte[stream.Length];
  68. stream.Read(buffer, , buffer.Length);
  69. return Convert.ToBase64String(buffer);
  70. }
  71. }
  72.  
  73. /// <summary>
  74. /// 字符串转对象(Base64编码字符串反序列化为对象)
  75. /// </summary>
  76. /// <param name="str">字符串</param>
  77. /// <returns>对象</returns>
  78. public static T StringToObject<T>(string str)
  79. {
  80. using (MemoryStream stream = new MemoryStream())
  81. {
  82. byte[] bytes = Convert.FromBase64String(str);
  83. stream.Write(bytes, , bytes.Length);
  84. stream.Position = ;
  85. IFormatter formatter = new BinaryFormatter();
  86. return (T)formatter.Deserialize(stream);
  87. }
  88. }
  89. }
  90.  
  91. /// <summary>
  92. /// 可序列化的类,用Serializable标示此类可序列化
  93. /// </summary>
  94. [Serializable]
  95. public class Student
  96. {
  97. public string StudentID { get; set; }
  98. public string StudentName { get; set; }
  99. }
  100. public static class SerializeHelper
  101. {
  102. /// <summary>
  103. /// 使用UTF8编码将byte数组转成字符串
  104. /// </summary>
  105. /// <param name="data"></param>
  106. /// <returns></returns>
  107. public static string ConvertToString(byte[] data)
  108. {
  109. return Encoding.UTF8.GetString(data, , data.Length);
  110. }
  111.  
  112. /// <summary>
  113. /// 使用指定字符编码将byte数组转成字符串
  114. /// </summary>
  115. /// <param name="data"></param>
  116. /// <param name="encoding"></param>
  117. /// <returns></returns>
  118. public static string ConvertToString(byte[] data, Encoding encoding)
  119. {
  120. return encoding.GetString(data, , data.Length);
  121. }
  122.  
  123. /// <summary>
  124. /// 使用UTF8编码将字符串转成byte数组
  125. /// </summary>
  126. /// <param name="str"></param>
  127. /// <returns></returns>
  128. public static byte[] ConvertToByte(string str)
  129. {
  130. return Encoding.UTF8.GetBytes(str);
  131. }
  132.  
  133. /// <summary>
  134. /// 使用指定字符编码将字符串转成byte数组
  135. /// </summary>
  136. /// <param name="str"></param>
  137. /// <param name="encoding"></param>
  138. /// <returns></returns>
  139. public static byte[] ConvertToByte(string str, Encoding encoding)
  140. {
  141. return encoding.GetBytes(str);
  142. }
  143.  
  144. /// <summary>
  145. /// 将对象序列化为二进制数据
  146. /// </summary>
  147. /// <param name="obj"></param>
  148. /// <returns></returns>
  149. public static byte[] SerializeToBinary(object obj)
  150. {
  151. MemoryStream stream = new MemoryStream();
  152. BinaryFormatter bf = new BinaryFormatter();
  153. bf.Serialize(stream, obj);
  154.  
  155. byte[] data = stream.ToArray();
  156. stream.Close();
  157.  
  158. return data;
  159. }
  160.  
  161. /// <summary>
  162. /// 将对象序列化为XML数据
  163. /// </summary>
  164. /// <param name="obj"></param>
  165. /// <returns></returns>
  166. public static byte[] SerializeToXml(object obj)
  167. {
  168. MemoryStream stream = new MemoryStream();
  169. XmlSerializer xs = new XmlSerializer(obj.GetType());
  170. xs.Serialize(stream, obj);
  171.  
  172. byte[] data = stream.ToArray();
  173. stream.Close();
  174.  
  175. return data;
  176. }
  177.  
  178. /// <summary>
  179. /// 将二进制数据反序列化
  180. /// </summary>
  181. /// <param name="data"></param>
  182. /// <returns></returns>
  183. public static object DeserializeWithBinary(byte[] data)
  184. {
  185. //注意,在反序列化的时候,将byte[]写入流以后,需要将游标移到首位,即将Position置零,否则反序列化将报错。
  186. MemoryStream stream = new MemoryStream();
  187. stream.Write(data, , data.Length);
  188. stream.Position = ;
  189. BinaryFormatter bf = new BinaryFormatter();
  190. object obj = bf.Deserialize(stream);
  191. stream.Close();
  192.  
  193. return obj;
  194. }
  195.  
  196. /// <summary>
  197. /// 将二进制数据反序列化为指定类型对象
  198. /// </summary>
  199. /// <typeparam name="T"></typeparam>
  200. /// <param name="data"></param>
  201. /// <returns></returns>
  202. public static T DeserializeWithBinary<T>(byte[] data)
  203. {
  204. return (T)DeserializeWithBinary(data);
  205. }
  206.  
  207. /// <summary>
  208. /// 将XML数据反序列化为指定类型对象
  209. /// </summary>
  210. /// <typeparam name="T"></typeparam>
  211. /// <param name="data"></param>
  212. /// <returns></returns>
  213. public static T DeserializeWithXml<T>(byte[] data)
  214. {
  215. MemoryStream stream = new MemoryStream();
  216. stream.Write(data, , data.Length);
  217. stream.Position = ;
  218. XmlSerializer xs = new XmlSerializer(typeof(T));
  219. object obj = xs.Deserialize(stream);
  220.  
  221. stream.Close();
  222.  
  223. return (T)obj;
  224. }
  225. }
  226. }

序列化之对象,字符串,byte数组,XML之间的转换(一)的更多相关文章

  1. 做筛选遍历时遇到的json字符串、json对象、json数组 三者之间的转换问题

    这个是后台对登录用户以及筛选条件的操作 @Override public List<SdSdPer> listResults(String sidx, String sord) { try ...

  2. JAVA将Object对象转byte数组

    /** * 将Object对象转byte数组 * @param obj byte数组的object对象 * @return */ public static byte[] toByteArray(Ob ...

  3. Byte[]和BASE64之间的转换

    一. BASE64编码 把byte[]中的元素当做无符号八位整数转换成只含有64个基本字符的字符串,这些基本字符是: l 大写的A-Z l 小写的a-z l 数字0-9 l '+' 和 '/' l 空 ...

  4. 如何在Byte[]和String之间进行转换

    源自C#与.NET程序员面试宝典. 如何在Byte[]和String之间进行转换? 比特(b):比特只有0 1,1代表有脉冲,0代表无脉冲.它是计算机物理内存保存的最基本单元. 字节(B):8个比特, ...

  5. 使用JAXB来实现Java合xml之间的转换

    使用jaxb操作Java与xml之间的转换非常简单,看个例子就明白了. //javaBean-->xml @Test public void test1() { try { JAXBContex ...

  6. Android Bitmap与DrawAble与byte[]与InputStream之间的转换工具类【转】

    package com.soai.imdemo; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; ...

  7. java与xml之间的转换(jaxb)

    使用java提供的JAXB来实现java到xml之间的转换,先创建两个持久化的类(Student和Classroom): Classroom: package com.model; public cl ...

  8. 可序列化对象和byte[]数组之间的互转

    /// <summary> /// 将可序列化对象转成Byte数组 /// </summary> /// <param name="obj">对 ...

  9. json字符串、json对象、数组 三者之间的转换

    json字符串转化成json对象 // jquery的方法 var jsonObj = $.parseJSON(jsonStr) //js 的方法 var jsonObj = JSON.parse(j ...

随机推荐

  1. 机器学习算法 - 最近邻规则分类KNN

    上节介绍了机器学习的决策树算法,它属于分类算法,本节我们介绍机器学习的另外一种分类算法:最近邻规则分类KNN,书名为k-近邻算法. 它的工作原理是:将预测的目标数据分别跟样本进行比较,得到一组距离的数 ...

  2. 工厂模式(Factory Method)

    1.工厂方法模式(Factory Method) 工厂方法模式分为三种: 1-1.普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建. 举例如下:(我们举一个发送邮件和短信的例子 ...

  3. 记一下flex弹性布局

    flex弹性布局也越来越广泛的在我们代码中出现了,更加方便我们的布局.自己用了查,查了用,有些还是记不住,俗话说好脑子不如烂笔头,原来都是写在本子上的,很不幸的一次次的想翻的时候总是找不到,还是写博客 ...

  4. Linux服务器制定mysql数据库备份的计划任务

    首先,创建一个shell脚本: Shell #!/bin/bash mysql_pwd="1234567890" mysql_dump="/usr/local/mysql ...

  5. iOS生成Bundle包及使用

    什么是Bundle文件? 简单理解,就是资源文件包.我们将许多图片.XIB.文本文件组织在一起,打包成一个Bundle文件.方便在其他项目中引用包内的资源. Bundle文件的特点? Bundle是静 ...

  6. flask_login 整合 pyjwt + json 简易flask框架

    现在很多框架都实现前后端分离,主要为了适应以下几个目的: 1,前后端的分离,可以使前端开发和后端开发更加分工明确,而不是后端还需要在视图模板中加入很多{% XXXX %}标签 2,是为了适应跨域调用或 ...

  7. java poi 导入日期为空

    如上两图,如果是第一种的话,可以导入,,但,如果是第二种的话,导入为空查看,导入的文件,有这么一条 debugger发现 它把2017-11-01转为Double,转不了,出错了,所以,我在catch ...

  8. Tomcat下载,新建自己的项目,模拟server

    一.tomcat下载 下载地址http://tomcat.apache.org/ 打开网页能够看到例如以下内容 在网页左边有Download以下就是能够下载的版本号.如6.0,7.0,8.0: 选择一 ...

  9. POJ 1849 Two(树的直径--树形DP)(好题)

    大致题意:在某个点派出两个点去遍历全部的边,花费为边的权值,求最少的花费 思路:这题关键好在这个模型和最长路模型之间的转换.能够转换得到,全部边遍历了两遍的总花费减去最长路的花费就是本题的答案,要思考 ...

  10. POJ 2367 topological_sort

    Genealogical tree Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2920 Accepted: 1962 Spe ...