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

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

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using System.Xml.Serialization;namespace Test_Control
{class Program{static void Main(string[] args){Object student = new Student() { StudentID = "99", StudentName = "zhang" };string result = ObjectToString<Object>(student);Console.WriteLine(result + "\r\n");Student newResult = StringToObject<Student>(result);Console.WriteLine("ID:{0}, Name:{1}" + "\r\n", newResult.StudentID, newResult.StudentName);//使用UTF8编码将字符串转成byte数组var byt = SerializeHelper.ConvertToByte("12zhang3");// Console.WriteLine(BitConverter.ToString(byt));//使用UTF8编码将byte数组转成字符串string str = SerializeHelper.ConvertToString(byt);Console.WriteLine(str);//使用指定字符编码将byte数组转成字符串string strr = SerializeHelper.ConvertToString(byt, Encoding.Unicode);Console.WriteLine(strr);//将对象序列化为二进制数据 var obj = new Student() { StudentID = "9", StudentName = "zhang" };var arr = SerializeHelper.SerializeToBinary(obj);Console.WriteLine(BitConverter.ToString(arr));//将对象序列化为XML数据 并且打印var xml = SerializeHelper.SerializeToXml(obj);Console.WriteLine(BitConverter.ToString(xml));//将二进制数据反序列化 并且打印var Bt = new byte[] { 12, 12, 24 };Student obje = SerializeHelper.DeserializeWithBinary<Student>(arr);Console.WriteLine(obje.StudentName);Console.ReadKey();}/// <summary>/// 对象转字符串(序列化后转Base64编码字符串)/// </summary>/// <param name="obj">对象</param>/// <returns>字符串</returns>public static string ObjectToString<T>(T obj){using (MemoryStream stream = new MemoryStream()){IFormatter formatter = new BinaryFormatter();formatter.Serialize(stream, obj);stream.Position = 0;byte[] buffer = new byte[stream.Length];stream.Read(buffer, 0, buffer.Length);return Convert.ToBase64String(buffer);}}/// <summary>/// 字符串转对象(Base64编码字符串反序列化为对象)/// </summary>/// <param name="str">字符串</param>/// <returns>对象</returns>public static T StringToObject<T>(string str){using (MemoryStream stream = new MemoryStream()){byte[] bytes = Convert.FromBase64String(str);stream.Write(bytes, 0, bytes.Length);stream.Position = 0;IFormatter formatter = new BinaryFormatter();return (T)formatter.Deserialize(stream);}}}/// <summary>/// 可序列化的类,用Serializable标示此类可序列化/// </summary>[Serializable]public class Student{public string StudentID { get; set; }public string StudentName { get; set; }}public static class SerializeHelper{/// <summary>/// 使用UTF8编码将byte数组转成字符串/// </summary>/// <param name="data"></param>/// <returns></returns>public static string ConvertToString(byte[] data){return Encoding.UTF8.GetString(data, 0, data.Length);}/// <summary>/// 使用指定字符编码将byte数组转成字符串/// </summary>/// <param name="data"></param>/// <param name="encoding"></param>/// <returns></returns>public static string ConvertToString(byte[] data, Encoding encoding){return encoding.GetString(data, 0, data.Length);}/// <summary>/// 使用UTF8编码将字符串转成byte数组/// </summary>/// <param name="str"></param>/// <returns></returns>public static byte[] ConvertToByte(string str){return Encoding.UTF8.GetBytes(str);}/// <summary>/// 使用指定字符编码将字符串转成byte数组/// </summary>/// <param name="str"></param>/// <param name="encoding"></param>/// <returns></returns>public static byte[] ConvertToByte(string str, Encoding encoding){return encoding.GetBytes(str);}/// <summary>/// 将对象序列化为二进制数据 /// </summary>/// <param name="obj"></param>/// <returns></returns>public static byte[] SerializeToBinary(object obj){MemoryStream stream = new MemoryStream();BinaryFormatter bf = new BinaryFormatter();bf.Serialize(stream, obj);byte[] data = stream.ToArray();stream.Close();return data;}/// <summary>/// 将对象序列化为XML数据/// </summary>/// <param name="obj"></param>/// <returns></returns>public static byte[] SerializeToXml(object obj){MemoryStream stream = new MemoryStream();XmlSerializer xs = new XmlSerializer(obj.GetType());xs.Serialize(stream, obj);byte[] data = stream.ToArray();stream.Close();return data;}/// <summary>/// 将二进制数据反序列化/// </summary>/// <param name="data"></param>/// <returns></returns>public static object DeserializeWithBinary(byte[] data){//注意,在反序列化的时候,将byte[]写入流以后,需要将游标移到首位,即将Position置零,否则反序列化将报错。MemoryStream stream = new MemoryStream();stream.Write(data, 0, data.Length);stream.Position = 0;BinaryFormatter bf = new BinaryFormatter();object obj = bf.Deserialize(stream);stream.Close();return obj;}/// <summary>/// 将二进制数据反序列化为指定类型对象/// </summary>/// <typeparam name="T"></typeparam>/// <param name="data"></param>/// <returns></returns>public static T DeserializeWithBinary<T>(byte[] data){return (T)DeserializeWithBinary(data);}/// <summary>/// 将XML数据反序列化为指定类型对象/// </summary>/// <typeparam name="T"></typeparam>/// <param name="data"></param>/// <returns></returns>public static T DeserializeWithXml<T>(byte[] data){MemoryStream stream = new MemoryStream();stream.Write(data, 0, data.Length);stream.Position = 0;XmlSerializer xs = new XmlSerializer(typeof(T));object obj = xs.Deserialize(stream);stream.Close();return (T)obj;}}
}

序列化之对象,字符串,byte数组,XML之间的转换(一)相关推荐

  1. C# 对象、文件与二进制串(byte数组)之间的转换

    1.关于本文 在使用C#下的TCP(类TcpClient).UDP(类UdpClient)协议传输信息时,都需要将信息转换为byte类型的数组进行发送.本文实现了两种object与byte数组的转换和 ...

  2. C# Object与二进制串(byte数组)之间的转换

    话不多说,看连接 这里是连接 [1]: 转换一. [2]: 转换二.

  3. java对象与byte[]数组之间的相互转化,压缩解压缩操作

    下面介绍一下java对象之间和byte[]数组之间的相互转化.并对byte[]数据进行压缩操作.java对象转化为byte[]数组可用于redis中实现缓存.(这里暂不做介绍).话不多说直接开实例: ...

  4. java String、Json对象与byte数组转换

    用途 测试String对象与byte数组转换方式 测试Json对象与byte数组转换方式 源代码 import java.io.UnsupportedEncodingException; import ...

  5. java字符串与基本数据_java --字符串与基本数据类型之间的转换

    public static void main(String[] args) { /** * 1.字符串与基本数据类型之间的转换 * 字符串-->基本数据类型,调用xx.parseXxx(Str ...

  6. C++字符串类型和数字之间的转换

    C++字符串类型和数字之间的转换 转载:http://www.cnblogs.com/luxiaoxun/archive/2012/08/03/2621803.html 1.字符串数字之间的转换 字符 ...

  7. android jni 将BYTE* 和 jbyteArray 之间的转换

     今天,简单讲讲如何在jni中将  BYTE* 转成 jbyteArray. 这个是我在做jni时碰到的问题.因为c传回的值是BYTE*,而返回给java代码是byte[],对应的jni的数据 ...

  8. DataSet与Xml之间的转换

    DataSet转化为Xml,Xml转化为DataSet,Ado.net中使用方法DataSet.WriteXml()和DataSet.ReadXml(),由于有多个重载方法,所以这里有多条路径可以实现 ...

  9. 【java】字符串和基本数据类型之间的转换

    字符串和基本数据类型之间的转换:程序的功能是比较两个数的大小 代码清单如下: package p1; import javax.swing.JOptionPane;public class Java_ ...

最新文章

  1. 正确理解ThreadLocal
  2. SAP Netweaver 7.4 SR2 Application Java Installation
  3. IntelliJ IDEA 2016.3.1 学习git 码云插件 学习笔记
  4. jQuery中增加新元素后没法响应原有的事件
  5. opencv颜色识别_opencv-python污水颜色识别
  6. ssm read time out的原因_为什么得肝病的男人越来越多?爱喝酒不是原因,或跟老婆有关系!...
  7. python学习笔记之读取配置文件【转自https://my.oschina.net/u/3041656/blog/793467】
  8. Python面向对象:类
  9. 【笔记】android应用签名
  10. 帝豪gs车机系统wince_酷车:10万左右买辆“网红车”,名爵ZS和帝豪GS怎么选?...
  11. Pyqt 的QThread vs Python标准库的线程
  12. 最齐全的地面贴图素材,速来收藏
  13. jmeter-json提取器提取数据
  14. WSL和双系统Ubuntu的CPU性能差异
  15. 4.Mybatis 环境搭建
  16. 冒烟测试 SMOKE Test
  17. 公众号二维码怎么生成
  18. 快递鸟智选物流API接口平台对接分享实例
  19. 计算机辅助电路小结,电子电路计算机辅助设计实训报告.doc
  20. 【笔记】html 图片映射 usemap(vue环境下、map、area、coords)

热门文章

  1. [20][03][79] Server-Side Request Forgery
  2. Kafka系列 - 14 Kafka消费者|分区的分配策略及再平衡|Range|RoundRobin|Sticky|CooperativeSticky
  3. java jaxb 注解_JAXB注解
  4. Linux 初学者:如何在 Ubuntu 中重启网络
  5. 《视觉SLAM十四讲》高翔第二版 实践出现的问题及解决办法笔记
  6. Vivado的Implementation都包含哪些步骤?
  7. 常用的Linux版本介绍
  8. linux中root权限找tmp路径,通过可写文件获取 Linux root 权限的 5 种方法-tmp文件
  9. 这篇文章教会你Python自动化测试需要学什么?怎么去学?从哪里开始学?看完本文学习python目标明确,学习简单粗暴。
  10. 永久设置ubuntu ulimit