Excess-3:由 Arvind Kumar Avinash 制造
String yaz = "123";
String binary =
Arrays.stream(yaz.split(""))
.map(x -> String.format("%4s", Integer.toBinaryString(Integer.pInt(x) + 3)).replace(' ', '0'))
.collect(Collectors.joining());
System.out.println(binary);
我不确定所使用的 stream.of 操作是否正确。我在这里的操作是;我从用户那里收到的十进制数据的每个数字加 3,并将其转换为 2 位系统。换句话说,457 = & gt;4,5,7 = (3 + 3 + 3) 7,8,10 = & gt;我们将数字 7 转换为 2 数字系统,以同样的方式,8 和 10 的结果应该是 (1000
aiken 代码:由 Alex Rudenko 制造
int input = 468;
String[] aiken = Integer.toString(input).chars()
.map(Character::getNumericValue)
.mapToObj(d -> String.format("%4s",
Integer.toBinaryString(d + (d > 4 ? 6 : 0))) // get aiken value
.replace(' ', '0') // provide 0 padding
)
.toArray(String[]::new);
System.out.println(input + " -> " + Arrays.toString(aiken));
我感谢你们两个
所请求的将单个数字转换为带前导零的二进制表示形式应使用准备好的字符串数组来实现:
static final String[] DIGITS = {
"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111",
"1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"
};
然后Excess-3 code可以通过将输入数字转换为 String,对每个字符使用Character::getNumericValue
并将值移动 3 来构建:
int input = 123;
String[] excess3 = Integer.toString(input).chars()
.map(Character::getNumericValue)
.mapToObj(i -> DIGITS[i + 3])
.toArray(String[]::new);
System.out.printf("xcs-3(%d) -> %s%n", input, String.join(" ", excess3));
输出:
xcs-3(123) -> 0100 0101 0110
根据 WikiAiken code是不同的,它将 6 添加到 4 上的数字(5-& gt;0xB,..9-& gt;0xF)。因此,要将单独的数字转换为其 Aiken 代码并将其打印为 4 位二进制数,可以使用以下代码:
int input = 468;
String[] aiken = Integer.toString(input).chars()
.map(Character::getNumericValue)
.mapToObj(d -> DIGITS[d > 4 && d <= 9? d + 6 : d])
.toArray(String[]::new);
System.out.printf("aiken(%d) -> %s%n", input, String.join(" ", aiken));
输出
aiken(468) -> 0100 1100 1110
使用String#split
将整数字符串拆分为数字。
使用Arrays#stream
从结果数组中获取流。
使用Stream#map
将3
添加到每个数字中,解析为一个整数,然后使用 Integer#toBinaryString
将获得的整数转换为二进制字符串,您可以将其格式化为占用 4 个字符所需的空间,并将其开头的空白位置替换为0
。
最后,连接流的所有元素。
现在,您可以将最终字符串(给出的代码中的binary
)设置为JTexField
。
import java.util.Arrays;
import java.util.stream.Collectors;
public class Main {
public static void main(String args[]) {
String yaz = "123";
String binary = Arrays.stream(yaz.split(""))
.map(x -> String.format("%4s", Integer.toBinaryString(Integer.pInt(x) + 3)).replace(' ', '0'))
.collect(Collectors.joining(" "));
System.out.println(binary);
}
}
Output:
0100 0101 0110
注意:如果二进制字符串之间不需要空格,请使用Collectors#joining
的非参数化变体,即不要将参数传递给它," "
。
或者,
您可以使用作为 Java SE 9 的一部分引入的String#chars
来创建流。请注意,它返回一个IntStream
,它需要boxed
才能获取Stream<Integer>
。
import java.util.stream.Collectors;
public class Main {
public static void main(String args[]) {
String yaz = "123";
String binary = yaz.chars()
.boxed()
.map(x -> String.format("%4s", Integer.toBinaryString(Character.getNumericValue(x) + 3)).replace(' ', '0'))
.collect(Collectors.joining(" "));
System.out.println(binary);
}
}
Output:
0100 0101 0110
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(21条)