gpt4 book ai didi

Java - 将字符串(4 个字符)转换为 int 并返回的乐趣

转载 作者:行者123 更新时间:2023-12-04 23:06:02 25 4
gpt4 key购买 nike

请不要问为什么,但我必须将一个字符串(最多 4 个字符)存储在一个整数值(所以 4 个字节)中。

首先我写了这个并且它有效:

String value = "AAA";
int sum = IntStream.range(0, value.length())
.limit(4)
.map(i -> value.charAt(i) << (i * 8))
.sum();

System.out.println(sum);

我无法为返回的方式想出一个实用的解决方案。

StringBuffer out = new StringBuffer();
while (sum > 0) {
int ch = sum & 0xff;
sum >>= 8;
out.append((char) ch);
}

有没有想过以函数式方式写回(到“AAA”)的方式?

最佳答案

使用流将其转换回 String 可能不是最好的方法;您现有的 while 循环看起来更干净并且性能可能更高。但是,有一个流解决方案。

String result = IntStream.range(0, 4)
.map(i -> (value >>> 24 - (i * 8)) & 0xFF)
.dropWhile(i -> i == 0)
.mapToObj(v -> String.valueOf( (char) v))
.collect(Collectors.joining());

这会生成一些字节索引,获取特定的字节值,将其映射到 char,然后将它们连接回 String。它还使用 Java 9+ method dropWhile 删除前导 0 值.

我已通过添加“24 -”首先获取最高有效字节来更正此问题以产生正确的顺序。

对于 0x10101 * 65value,返回 "AAA"。对于 0x10101 * 65 + 1value,返回 "AAB"

关于Java - 将字符串(4 个字符)转换为 int 并返回的乐趣,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56657840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com