好了,伙计们,我看到有人问我如何将字节数组转换为int、string、Stream等……这些问题的答案各不相同,我个人没有找到任何令人满意的答案。
下面是我们想要将字节数组转换成的一些类型。
可以接收ttf数据的UnityEngine.Font。
H可以从.png、.jpg等图像文件中获取数据的UnityEngine.Testure2D。
我们如何将字节数组转换为String、UnityEngine.Testure2D,UnityEngine.Font、Bitmap等...
填充字节数组的数据必须来自一个文件类型,该文件类型的数据可以由我们想要将字节数组转换为?
这目前是可能的吗?
任何帮助都将不胜感激。
发布于 2015-10-09 01:56:32
基元类型很简单,因为它们有一个定义为字节数组的表示。其他对象不是这样的,因为它们可能包含无法持久保存的内容,如文件句柄、对其他对象的引用等。
您可以尝试使用BinaryFormatter将对象持久化到字节数组
public byte[] ToByteArray<T>(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<T>(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;
}
}但并非所有类型都是可序列化的。例如,没有办法“存储”到数据库的连接。您可以存储用于创建连接的信息(如连接字符串),但不能存储实际的连接对象。
发布于 2021-10-26 08:33:06
您可以将字节数组反序列化为.Net 6中的类对象,如下所示。
using System.Text.Json;
using MemoryStream ms = new MemoryStream(bytes);
Examlple ex = JsonSerializer.Deserialize<Example>(ms);
Console.WriteLine(ex.Value);
class Example
{
string Value {get; set; }
}发布于 2019-02-27 14:18:43
c++模板版本:
template<typename T>
void fromByteArray(T& t, byte *bytes)
{
t = *(T*)bytes;
};
template<typename T>
byte * toByteArray(T& t)
{
return (byte*)&t;
};https://stackoverflow.com/questions/33022660
复制相似问题