0

IronPython で外部 dll を使用するには、文字列をchar 配列(C++ .NET では char var[len];) に渡す必要があります。SByte配列を渡すことが期待されているようです。

私が試したら

myVarFromCLibrary = myPyString

私は得る

TypeError: expected Array[SByte], got str

Webにはほとんど情報がありません。これまでのところ、次のようなものを適用できることがわかりました。

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 に答える