我正在编写一个applet来包装可以在浏览器中使用的专有.dll。为实现这一目标,我正在使用JNA。 .dll连接到检查扫描仪外围设备,可以从设备存储器中提取图像。
我必须使用JNA在Java中进行Windows API调用以获取图像:
// 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á
注意到最后的乱码
在String上调用getBytes()时,Java是否返回NULL终止的byte []数组?
答案 0 :(得分: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);