我正在实现一种将一组数据传输到可编程加密狗的方法。加密狗基于智能卡技术,可以在内部执行任意代码。输入和输出数据作为二进制块传递,可以通过输入和输出指针进行访问。
我想使用一个关联数组来简化数据处理代码。一切都应以这种方式工作:
首先是主机应用程序:
// Host application in C++
in_data["method"] = "calc_r";
in_data["id"] = 12;
in_data["loc_a"] = 56.19;
in_data["loc_l"] = 44.02;
processor->send(in_data);
接下来的加密狗中的代码:
// Some dongle function in C
char* method_name = assoc_get_string(in_data, "method");
int id = assoc_get_int(in_data, "id");
float loc_a = assoc_get_float(in_data, "loc_a");
float loc_l = assoc_get_float(in_data, "loc_l");
所以我的问题是关于加密狗部件的功能。是否有C代码或库可实现上述类似的关联数组行为?
最佳答案
我怀疑您必须自己编写。如果我了解您所描述的体系结构,那么您将需要将整个数据块发送到一个块中。如果是这样,那么大多数库将无法正常运行,因为它们很可能会分配多个内存,这将需要多次传输(并且需要内部了解结构)。这类似于尝试使用库哈希函数,然后仅通过将根指针传递给send
函数,就可以通过套接字在网络上发送其内容。
可以编写自己的一些实用程序,这些实用程序在单个内存块中管理非常简单的关联数组(或哈希)。如果数据量很小,则可以对条目使用简单的线性搜索,并且代码量也非常紧凑。