如何指定字节数组点阵列在Java

问题描述:

显示图像转换我有一个Base64编码的字符串:iQA8AJ4ANwCjADYAqQA1ALAANAC7ADMAyAAyANUAMQACATEAEwEyACMBNABDATkAUwE8AGIBQABwAUQAfgFIAIsBTQCYAVEApQFVALIBWQC + AVwAygFgANcBYgDjAWQA8AFmAPwBZwAIAmcAFQJmACECZAAsAmMAOAJgAEMCXQBNAlkAVgJWAF8CUgBnAk4AbgJKAHUCRgB7AkIAgAI + AIQCOwCIAjgAjAI1AI8CMwCSAjIA如何指定字节数组点阵列在Java

我的系统需要为Base64解码此值。解码后的数据是一系列2字节x 2字节的y坐标(低位字节第1位)。即(-1,-1)或(0xFFFF,0xFFFF)表示笔。

如何将Java编码的Based64编码转换为Point Array?

+0

我刚刚更新了标题。我的解释不清楚。这是不同的问题。 –

byte[] bytes = Base64.getDecoder().decode("8AG..."); 
ShortBuffer buf = ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN).asShortBuffer(); 
int npoints = bytes.length/4; 
for (int i = 0; i < npoints; ++i) { 
    short x = buf.get(); 
    short y = buf.get(); 
} 

即:将字节包装在ByteBuffer中。设置little-endian的字节顺序,并获取短裤。

较旧的答案存在Base64。这使用最新的Base64类替换旧的。

+0

我很抱歉。我错过了很棒的东西:)。谢谢你的帮助。但是,我得到了异常:byte [] bytes = Base64.getDecoder()。decode(“8AG ...”);. java.lang.IllegalArgumentException异常:非法base64字符2e。如何检查编码字符串是否正确? –

+0

它运作良好。非常感谢你。 –