SWIG unsigned char到字节数组c#

时间:2014-08-26 12:30:50

标签: c# c++ arrays swig uint8t

只是在SWIG周围玩游戏并且在未打开的字符的情况下粘贴在字体图上。 我需要在C#中将以下uint指针作为byte []。

//C++
uint8_t* data;
//C#
ushort[] or byte[] data;

对于Python,我发现了一些想法应该是什么样子但是没有C#实现的垃圾。 有人可以提出方向吗? 提前谢谢!

解决:

感谢另一个问题的标记,但我不认为它是重复的,因为它是用于清除PI / Invoke或DLL导入的。我使用SWIG执行此操作,与DLL导入和指针无关(SWIG自行完成)。但是,如果有人遇到同样的问题,我会出现一些问题: 首先,如果有人想尝试一下,可以查看更多的字体图:

%include "cpointer.i"
//%pointer_cast(unsigned char*,byte, convert_to_array)

%include "carrays.i"
//%array_functions(unsigned char, ushort);

不确定它们应该如何工作,所以这是我的最终解决方案: 为SWIG制作C ++转换器,coz SWIG将char *转换为字符串或字符串转换为具有右库的字符串:

C ++转换代码

std::string ConvertData(uint8_t &data)
{
    char* inner = (char*)malloc(sizeof(data));    
    std::string tmp ;    
    for (int i = 0; i < sizeof(data); i++)
    {
        sprintf(inner, "%02X ", data[i]);
        tmp += inner;

    return tmp;
}

我需要一些格式,因为它最终用作HEX。此格式将实际数据字节分为2个字符,大写字母和它们之间有空格。

使用SWIG接口文件时,请在C ++标头之前添加此文件。这将告诉SWIG使用std库并使用字符串权限。使用char *而不是string和SWIG的其他选项也会返回字符串。

%include "std_string.i" 

然后在C#或任何语言中,您可以根据需要使用字符串。我解析成白色空格的字符串数组。

C#

string[] tmp = ConvertData(parsedStringFromCPP).Split(' ');

希望也可以帮助别人。干杯

0 个答案:

没有答案