如何将字节数组转换为任何类型
好吧伙计们,我看到有人询问如何将字节数组转换为int
, string
, Stream
等等的问题……而且答案都各不相同,我个人没有找到任何满意的答案。
所以这里有一些我们想要将字节数组转换为的类型。
UnityEngine.Font
可以接收ttf
数据。
UnityEngine.Testure2D
,它可以从图像文件中获取数据,如.png
, .jpg
等…
我们如何将字节数组转换为String
, UnityEngine.Testure2D,UnityEngine.Font
, Bitmap
等…
填充字节数组的数据必须来自一个文件类型,其数据可以通过我们要将字节数组转换为的类型来管理?
这目前可能吗?
任何帮助,将不胜感激。
原始类型很容易,因为它们具有定义的表示forms作为字节数组。 其他对象不是因为它们可能包含无法持久化的内容,例如文件句柄,对其他对象的引用等。
您可以尝试使用BinaryFormatter
将对象持久化到字节数组:
public byte[] ToByteArray(T obj) { if(obj == null) return null; BinaryFormatter bf = new BinaryFormatter(); using(MemoryStream ms = new MemoryStream()) { bf.Serialize(ms, obj); return ms.ToArray(); } } public T FromByteArray (byte[] data) { if(data == null) return default(T); BinaryFormatter bf = new BinaryFormatter(); using(MemoryStream ms = new MemoryStream(data)) { object obj = bf.Deserialize(ms); return (T)obj; } }
但并非所有类型都可序列化。 例如,没有办法“存储”与数据库的连接。 您可以存储用于创建连接的信息(如连接字符串),但不能存储实际的连接对象。