String IronPython从Python字符串转换为SByte数组 < P> >在IrPython中使用外部DLL,必须将字符串传递给字符数组(Char var [LeN];在C++中.NET中)。它似乎有望通过一个SByte数组

String IronPython从Python字符串转换为SByte数组 < P> >在IrPython中使用外部DLL,必须将字符串传递给字符数组(Char var [LeN];在C++中.NET中)。它似乎有望通过一个SByte数组,string,ironpython,arrays,String,Ironpython,Arrays,如果我尝试 myVarFromCLibrary = myPyString 我明白了 网络上的信息很少。到目前为止,我发现我可以应用如下内容: from System import Array ... myCString = Array[System.SByte](myPyString) myVarFromCLibrary = myCString 如果我这样做,我会得到如下错误: TypeError: expected SByte, got str 如何获得正确的转换。与此同时,我找到了一

如果我尝试

myVarFromCLibrary = myPyString
我明白了

网络上的信息很少。到目前为止,我发现我可以应用如下内容:

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

myVarFromCLibrary = myCString
如果我这样做,我会得到如下错误:

TypeError: expected SByte, got str

如何获得正确的转换。

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

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)
这使我的程序保持运行,但不是真正的解决方案

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)