此消息来自外部系统,这是以字节形式出现的,
我必须在我的Java代码中使用它。我将其作为一个字节并转换为String
。
任何人都可以帮我接受它只是字节而不是把它变成字符串并转换成字节。
以下是该外部系统的输出,直到等于:
wcLDxMXGx8jJ0fHy8 / T1AHsSNFw =
我想将其存储在byte
或byte[]
。
我自己尝试过,但它说error at =
。我必须将其用作字节,仅将其视为String
,然后转换为byte
将会出现问题,而不是预期的。
答案 0 :(得分:1)
您可以使用类javax.xml.bind.DatatypeConverter
(自Java SE 6更新3以来):
<强>代码强>:
public static void main(String[] args) {
String str = "wcLDxMXGx8jJ0fHy8/T1AHsSNFw=";
byte[] array = DatatypeConverter.parseBase64Binary(str);
System.out.println(Arrays.toString(array));
}
<强>输出强>:
[-63, -62, -61, -60, -59, -58, -57, -56, -55, -47, -15, -14, -13, -12, -11, 0, 123, 18, 52, 92]
答案 1 :(得分:0)
try (ByteArrayInputStream bais = new ByteArrayInputStream()) {
try (InputStream externalSource = ...)) {
for (;;) {
int b = externalSource.read();
if (b == -1 || b == 'I') { // End of file or ASCII I
break;
}
bais.write((byte) b);
}
}
byte[] bytes = bais.toByteArray();
}
你的问题中有一个“直到”,我将其翻译成条件|| b == 'I'
。
你可能不打算这样做。也许您使用的是=
而不是==
。
上面读取一个int,当文件结束时为-1,否则为字节值。
try-with-resources语法可确保关闭externalSource
和bais
。