0

为了在 IronPython 中使用外部 dll,我必须将字符串传递给char 数组(char var[len]; 在 C++.NET 中)。似乎应该传递一个 SByte 数组。

如果我尝试

myVarFromCLibrary = myPyString

我明白了

TypeError: expected Array[SByte], got str

网络上的信息很少。到目前为止,我发现我可以应用这样的东西:

from System import Array
...
myCString = Array[System.SByte](myPyString)

myVarFromCLibrary = myCString

如果这样做,我会收到如下错误:

TypeError: expected SByte, got str

如何获得正确的转换。

4

1 回答 1

0

同时我找到了一种解决方法,但没有解决方案:

def strToCharArray(theCharArray,theString):
  asBytes = bytes(theString,'ascii')  
  for i in xrange(len(theString)):
    theCharArray[i] = ord(asBytes[i])
  theCharArray[len(asBytes)] = 0

def charArrayToStr(theCharArray):  
  chars = []
  i     = 0
  while theCharArray[i]>0: 
    chars.append(chr(theCharArray[i]))
    i += 1
  return "".join(chars)

这使我的程序保持运行,但不是真正的解决方案

于 2013-06-20T07:23:06.717 回答