我有ip地址字符串,如“192.168.1.1”。是否可以使用java 8流解析字符串并获得原始字节数组。目前我有代码
Arrays.stream(address.split("\\."))
.map(UnsignedBytes::parseUnsignedByte)
.toArray(Byte[]::new);
其中UnsignedBytes是返回字节的guava类,但此代码返回Byte []而不是byte []
更新 是的,我读到了为什么没有ByteStream类。 我的问题是,是否有可能使用java-8流获取字节数组,而无需创建中间列表等开销。
答案 0 :(得分:3)
您可以使用Java's InetAddress类。
InetAddress i = InetAddress.getByName("192.168.1.1");
byte[] bytes = i.getAddress();
答案 1 :(得分:1)
您可以使用Pattern.splitAsStream(CharSequence)
在收藏家中使用ByteArrayOutputStream
:
byte[] bytes = Pattern.compile("\\.")
.splitAsStream(address)
.mapToInt(Integer::parseInt)
.collect(
ByteArrayOutputStream::new,
ByteArrayOutputStream::write,
(baos1, baos2) -> baos1.write(baos2.toByteArray(), 0, baos2.size())
)
.toByteArray();