首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将字节数组转换为任意类型

如何将字节数组转换为任意类型
EN

Stack Overflow用户
提问于 2015-10-09 01:47:56
回答 3查看 44.7K关注 0票数 21

好了,伙计们,我看到有人问我如何将字节数组转换为intstringStream等……这些问题的答案各不相同,我个人没有找到任何令人满意的答案。

下面是我们想要将字节数组转换成的一些类型。

可以接收ttf数据的UnityEngine.Font

H可以从.png.jpg等图像文件中获取数据的UnityEngine.Testure2D

我们如何将字节数组转换为StringUnityEngine.Testure2D,UnityEngine.FontBitmap等...

填充字节数组的数据必须来自一个文件类型,该文件类型的数据可以由我们想要将字节数组转换为?

这目前是可能的吗?

任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-10-09 01:56:32

基元类型很简单,因为它们有一个定义为字节数组的表示。其他对象不是这样的,因为它们可能包含无法持久保存的内容,如文件句柄、对其他对象的引用等。

您可以尝试使用BinaryFormatter将对象持久化到字节数组

代码语言:javascript
复制
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;
    }
}

但并非所有类型都是可序列化的。例如,没有办法“存储”到数据库的连接。您可以存储用于创建连接的信息(如连接字符串),但不能存储实际的连接对象。

票数 47
EN

Stack Overflow用户

发布于 2021-10-26 08:33:06

您可以将字节数组反序列化为.Net 6中的类对象,如下所示。

代码语言:javascript
复制
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; }
}
票数 1
EN

Stack Overflow用户

发布于 2019-02-27 14:18:43

c++模板版本:

代码语言:javascript
复制
template<typename T>
void fromByteArray(T& t, byte *bytes)
{
  t = *(T*)bytes;
};

template<typename T>
byte * toByteArray(T& t) 
{
  return (byte*)&t;
};
票数 -6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33022660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档