2011-09-14 26 views
1

我正在編寫一個小程序來包裝可以在瀏覽器中使用的專有.dll文件。爲了達到這個目標,我使用JNA。 .dll連接到檢查掃描儀外圍設備,並可從設備內存中提取圖像。文件IO之後的奇怪亂碼

我不得不在Java的Windows API調用,使用JNA,以獲取圖像:

// DEVICE is the JNA Library interface 

HANDLEByReference img = new HANDLEByReference(); 
File outfile = new File("my_image.bmp"); 

DEVICE.saveImage(img.getValue(), outfile.getName().getBytes()); 

當代碼保存圖像,我得到一個名字類似:

C:\Users\user\workspace\JavaProject\bin\my_image.bmpó_¯=Pá 

音符調用的getBytes時(在結束

不爪哇的亂碼返回NULL終止byte []數組)在一個字符串?

回答

1

不,String.getBytes()只是返回字符串的編碼形式的字節。

請注意,它也使用平臺默認編碼,除非您指定編碼,並且默認可能不是你想要的。

如果你想在最後一個「0」字節數組,你可以使用:

byte[] data = outfile.getName().getBytes(encoding); 
byte[] padded = new byte[data.length + 1]; 
System.arraycopy(data, 0, padded, 0, data.length); 
+0

謝謝您的回答。我做了一個小小的改進,並且在.dll API中實現了第二個參數是Windows類型LPSTR,JNA聲明默認映射是Java字符串https://github.com/twall/jna/blob/master/www/ Mappings.md。如果問題仍然存在,我會記住你的代碼示例。 –