Java字符串到int二进制数的转换
我正在尝试将用户输入字符串转换为int。没有问题,我使用以下代码:Java字符串到int二进制数的转换,java,Java,我正在尝试将用户输入字符串转换为int。没有问题,我使用以下代码: c = sc.next(); while(!c.contains("#")){ i = Integer.parseInt(c); input.add(c); c= sc.next(); } (这只是执行转换的代码部分,扫描仪部分正在工作) 唯一的问题是,输入是二进制数,所以当输入是,例如“00111”,转换给我“111”,我不能丢失这些0。如何将用户输入转换为数字而不丢失左边的零?如果00111与111
c = sc.next();
while(!c.contains("#")){
i = Integer.parseInt(c);
input.add(c);
c= sc.next();
}
(这只是执行转换的代码部分,扫描仪部分正在工作)
唯一的问题是,输入是二进制数,所以当输入是,例如“00111”,转换给我“111”,我不能丢失这些0。如何将用户输入转换为数字而不丢失左边的零?如果
00111
与111
不同,则不能将其存储为整数,需要将其存储为字符串
然而,请注意,即使在二进制中,001112也等于1112
要解析二进制文本并将其存储为整数,可以使用
Integer.parseInt(c, 2);
(但这并不能解决保留前导零的问题。)如果
00111
与111
不同,则不能将其存储为整数,需要将其存储为字符串
然而,请注意,即使在二进制中,001112也等于1112
要解析二进制文本并将其存储为整数,可以使用
Integer.parseInt(c, 2);
(但这并不能解决保留前导零的问题。)Integer.parseInt(“00111”,2)代码>
但要区分二进制(2)和十进制(10)数字,必须事先知道基数
还是我不明白你的问题?您关于“丢失0”的陈述有点难以理解。Integer.parseInt(“00111”,2)代码>
但要区分二进制(2)和十进制(10)数字,必须事先知道基数
还是我不明白你的问题?您关于“丢失0”的陈述有点难以理解。您应该使用:
Integer.parseInt(c, 2)
你应使用:
Integer.parseInt(c, 2)
要保留二进制字符串s中的前导零,请执行以下操作:
从字符串到整数:将“1”作为前缀附加到s,并转换为整数
从整数到字符串:将整数转换为二进制字符串并删除第一个“1”。要保留二进制字符串中的前导零,请执行以下操作:
从字符串到整数:将“1”作为前缀附加到s,并转换为整数
从整数到字符串:将整数转换为二进制字符串,并删除第一个“1”。这些是小的尾数二进制数吗?你不能丢失零而留下一个数字。它必须是零填充字符串才能以这种方式表示。您能解释一下为什么不能丢失零吗?请注意,在您当前的代码中,您没有使用i
。为什么要将字符串转换为int?如果您确实需要,对于int类型,左边有零是没有意义的。对吗?这些是小的endian二进制数吗?你不能失去零而留下一个数字。它必须是零填充字符串才能以这种方式表示。您能解释一下为什么不能丢失零吗?请注意,在您当前的代码中,您没有使用i
。为什么要将字符串转换为int?如果您确实需要,对于int类型,左边有零是没有意义的。对吗?这仍然会为00111
和111
提供相同的结果。这仍然会为00111
和111
提供相同的结果。这仍然会为00111
和111
@aioobe提供相同的结果,当然。但我认为操作混乱是从二进制到十进制的转换。执行Integer.parseInt(“00111”)返回111。这个“111”是以10为基数表示的整数,但op认为它是以2为基数表示的整数。这对于00111
和111
@aioobe仍然会给出相同的结果,当然。但我认为操作混乱是从二进制到十进制的转换。执行Integer.parseInt(“00111”)返回111。这个“111”是以10为基数表示的整数,但op认为它是以2为基数表示的整数。要保持前导零,应使用NumerFormat
class。类似于formatter=newdecimalformat(“00#####”)然后stringresult=formatter.format(Integer.parseInt(c,2))
为了保持前导零,您应该使用NumerFormat
class。类似于formatter=newdecimalformat(“00#####”)然后stringresult=formatter.format(Integer.parseInt(c,2))代码>