[英]How to convert String value to Pointer<Byte> (Java, JNAerator)?
我已使用JNAerator將.dll庫轉換為JAR。 現在我需要調用OpenTCPIPPort_V方法,如下所示: public static short OpenTCPIPPort_V(Pointer<Byte > tcpPort, Pointer<Byte > IPAddr)
如何將兩個字符串值傳遞給此方法?
我找到了解決方案 這是方法Pointer<Byte> org.bridj.Pointer.pointerToCString(String string)
我為TekVisa DLL(用於控制Tektronix的測量儀器的DLL)嘗試了pointerToCString,這對於打開儀器會話不起作用。 這個帖子中的第二個答案更好但是錯過了一個細節:字節數組必須以0終止。我的代碼可以工作。 (儀器變量的類型為String,包含儀器字符串,例如“TCPIP :::: INSTR”。)
有趣的是,pointerToCString在向儀器發送命令時起作用,例如viWrite(“* IDN?”)。
Pointer<Byte> pViString = Pointer.allocateBytes(instrument.length() + 1);
byte[] instrumentBytes = instrument.getBytes();
pViString.setBytes(instrumentBytes);
pViString.setByteAtIndex(instrument.length(), (byte) 0);
String類中有一個名為getBytes的函數。 這是一個例子:
String example = "example, string";
byte[] bytes = example.getBytes();
你現在需要的是將那些byte []值放入你的指針中。 我想你現在可以辦理了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.