标签:inParam C# hexString outlen int outstr Go byte DLL
private void button6_Click(object sender, EventArgs e) { byte[] inParam = null; IntPtr ptr = IntPtr.Zero; int outlen = -1; string outstr = ""; inParam = Encoding.UTF8.GetBytes("执着不可取"); int ret = Inwhtl_DLL.TestApi(inParam,ref ptr, ref outlen); if(outlen > 0) { outstr = Marshal.PtrToStringAnsi(ptr, (int)outlen); byte[] byt = strToToHexByte(outstr); outstr = Encoding.UTF8.GetString(byt); MessageBox.Show(outstr); } } /// <summary> /// 字符串转16进制字节数组 /// </summary> /// <param name="hexString"></param> /// <returns></returns> private static byte[] strToToHexByte(string hexString) { hexString = hexString.Replace(" ", ""); if ((hexString.Length % 2) != 0) hexString += " "; byte[] returnBytes = new byte[hexString.Length / 2]; for (int i = 0; i < returnBytes.Length; i++) returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16); return returnBytes; } package main import "C" import ( "e.coding.net/jiftle/inwarehousetool/checktool/chktl" "encoding/hex" "fmt" "os" ) //export Sum func Sum(a int, b int) int { //最简单的计算和 return a + b } //export TestApi func TestApi(inParam *C.char, outParam **C.char, outlen *C.int) int { // 输入参数 in := C.GoString(inParam) // 注意事项 s := "1122ABC你" + in bytS := []byte(s) s = hex.EncodeToString(bytS) // 输出参数 *outParam = C.CString(s) var noutlen int noutlen = len(C.GoString(*outParam)) *outlen = C.int(noutlen) return 0 }
https://www.cnblogs.com/Leo_wl/p/12075987.html
标签:inParam,C#,hexString,outlen,int,outstr,Go,byte,DLL 来源: https://www.cnblogs.com/jiftle/p/12817334.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。