gpt4 book ai didi

java - 如何使用 swig 将 wchar_t 数组转换为 java 的字节数组?

转载 作者:太空宇宙 更新时间:2023-11-04 03:47:21 25 4
gpt4 key购买 nike

我创建了以下辅助函数,但我无法让它生成接受字节数组作为输入的 java 接口(interface)。

size_t get_p_wchar_t_bytes(wchar_t *wstr, char * bytes, size_t len)
{
size_t wlen,cpylen;
wlen = count_p_wchar_t_bytes(wstr);
cpylen = len > wlen ? wlen : len;
memcpy(bytes, wstr, cpylen);
return cpylen;
}

size_t count_p_wchar_t_bytes(wchar_t *wstr)
{
return wcslen(wstr) * sizeof(wchar_t);
}

我在我的模板中定义了以下内容

%include "arrays_java.i"
%apply int[] {int *};
%include "wchar.i"

问题是 char * 被转换为“字符串”而不是字节数组,这没有帮助。

public static long get_p_wchar_t_bytes(SWIGTYPE_p_wchar_t wstr, String bytes, long len)

我想要的作为 swig 的输出是这样的......

public static long get_p_wchar_t_bytes(SWIGTYPE_p_wchar_t wstr, byte[] bytes, long len)

那我该怎么做呢?最终,我只需要一种方法将 w_char_t 数组以一种可以使用的格式传递给 java,而不会造成任何内存泄漏。

最佳答案

我能够通过将模板更改为以下内容来解决此问题,这是我在 http://swig.10945.n7.nabble.com/Converting-char-to-byte-String-in-Java-td276.html 找到的解决方案

// knows about things like int *OUTPUT:
%include "typemaps.i"
// knows about int32_t
%include "stdint.i"
%include "arrays_java.i"
%apply int[] {int *};

// convert char * to byte array
%apply signed char[] {char* pchar};

%include "wchar.i"

关于java - 如何使用 swig 将 wchar_t 数组转换为 java 的字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23234571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com