小编Arm*_*ndt的帖子

C:将字节数组转换为struct

我有一个将字节数组转换为结构的问题,忽略或跳过一些字节.

鉴于以下结构,

typedef struct
{
    uint32_t id;
    uint16_t test;
    uint8_t group;
    uint32_t time;
    uint16_t duration;
    uint8_t a;
    uint8_t b;
    uint8_t c;
    uint16_t d;
    uint16_t e;
    uint8_t status;
    uint8_t x;
    uint8_t y;

} testStruct_t, *PtestStruct_t;
Run Code Online (Sandbox Code Playgroud)

我有一个包含以下测试数据的数组:

uint8_t pBuff = { 0x11 , 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19 };
Run Code Online (Sandbox Code Playgroud)

铸造如下:

PtestStruct_t pStruct = (PtestStruct_t)pBuff;
Run Code Online (Sandbox Code Playgroud)

在结构的某处,某些字节被跳过或忽略.我不知道为什么.这已经在Visual Studio 2012和需要进行此测试和调试的ARM处理器上进行了测试.

我在这里错过了什么?我不相信它与Endian有关.它可能是两个测试用例中的编译器,我不知道在最后一种情况下该怎么做.

被跳过/忽略的字节是0x880x14

c c++ arrays struct

5
推荐指数
1
解决办法
2万
查看次数

从Class类型转换为Reference类

这个问题的背景可以从我之前的问题中找到.

上一个问题:http://tinyurl.com/chq4w7t

我有一个Comm带发送功能的界面:

public interface Comm
{
    public int send(Socket socket, byte[] bytes);
}
Run Code Online (Sandbox Code Playgroud)

我具有各种类(Server,Client,Serial它实现了接口等)Comm.我可以将这些类对象作为参数传递给另一个类中的另一个发送函数,该类充当Comm对象和各种插件之间的管理器,这些插件可配置为使用这些Comm类之一作为通信介质.

(Server,Client,Serial,等等)可以被作为参数传递到下面的发送功能

public void Send(Comm com, Socket socket, byte[] message)
{
    com.send(null, message);
}
Run Code Online (Sandbox Code Playgroud)

从我之前的问题我有一个getClasses函数,它返回一个Class[]并将String作为参数.这用于提供不同的配置选项.

我用Class.forName("Client");例如返回ClassClient 的对象.

现在最后我的问题如下:

如何转换ClassComm类型?我做了以下尝试以获得一个想法:( cboxComm是一个用于测试我的代码的测试组合框.它包含Comm对象的类名)

// Some code I have no idea how …
Run Code Online (Sandbox Code Playgroud)

java interface

0
推荐指数
1
解决办法
115
查看次数

标签 统计

arrays ×1

c ×1

c++ ×1

interface ×1

java ×1

struct ×1