c# - C# 是否有办法将具有 int 字段(字节、ushort、ulong 等)的对象编写为字节数组?
问题描述
我正在尝试将仅具有 int 字段(ushort、ulong、uint、int 等)的对象转换为一个字节数组,其中包含每个 int 作为一个字节,按照它在对象中出现的顺序。例如,如果我有一个形式的对象
obj = {subobj: {uint firstProp: 500, ushort secondProp: 12}, byte lastProp: 5}
然后我希望字节数组是
{0, 0, 1, 244, 0, 12, 5}
我尝试通过使用序列化(如本答案中所述)来创建这个字节数组,但我注意到每个字节之前和之后都有一堆东西。基于这个网站,我相信这代表了我不想要的数据库和文件。我知道在 C++ 中我可以使用它reinterpret_cast<uint8_t*>(obj)
来获得所需的结果。在 C# 中是否有等效的方法来执行此操作?
解决方案
你可以尝试做这样的事情:
foreach(int value in obj)
{
byte lsbOfLsb = (byte)value;
byte msbOfLsb = (byte)(value >> 8);
byte lsbOfMsb = (byte)(value >> 16);
byte msbOfMsb = (byte)(value >> 24);
}
显然这只是想法。您应该使用 for 循环而不是 foreach 并将所有元素解析为 int eg。另一种方法是检查数据类型
typeof(value) //op 1
// OR
if(value is int) //e.g.
然后根据需要转换为字节。
推荐阅读
- python-3.x - 我正在尝试将 .pb 文件转换为 .mlmodel 文件。我收到错误消息“Tensorflow 图不包含具有此名称的张量”
- javascript - 如何在javascript中的buttonclick上将图像放在另一个图像中
- sql-server - TFS 2015 - 修改 SQL Server 报告 (SSRS) 以包含用于列出签入文件的列
- ios - 即使在 iOS Swift 中获得 Facebook 的批准后,也无法获取 age_range 和性别
- html - 奇怪的行为
- reactjs - 按下时反应导航错误不会触发
- python - 为什么 numpy.ndarray.data 是切换?
- c++ - 如何创建不需要 Vista/Win7 用户安装 Visual C++ 可再发行组件的 Windows 可执行文件?
- javascript - 如何从 ng-model 填充文本的角度元素中获取文本
- mysql - 使用mysql查询一次查询中插入1000000行