Java 字符串的八进制值
我需要任何给定字符串的八进制值,为此我使用下面的代码Java 字符串的八进制值,java,string,octal,Java,String,Octal,我需要任何给定字符串的八进制值,为此我使用下面的代码 public static void main(String[] args) { HashMap<Character, String> octalValues = new HashMap<Character, String>(); octalValues.put('*', "052"); octalValues.put('1', "061"); octa
public static void main(String[] args) {
HashMap<Character, String> octalValues = new HashMap<Character, String>();
octalValues.put('*', "052");
octalValues.put('1', "061");
octalValues.put('2', "062");
octalValues.put('3', "063");
octalValues.put('a', "141");
octalValues.put('b', "142");
octalValues.put('c', "143");
octalValues.put('d', "144");
String value = "123abc*";
for (char i = 0; i < value.length(); i++) {
System.out.print(octalValues.get(value.charAt(i)) + " ");
}
publicstaticvoidmain(字符串[]args){
HashMap octalValues=新HashMap();
八进制值。put('*',052”);
八进制值。put('1','061”);
八进制值。put('2','062');
八进制值。put('3','063');
八进制值。put('a','141”);
八进制值。put('b','142”);
八进制值。put('c','143”);
八进制值。put('d','144”);
字符串值=“123abc*”;
for(字符i=0;i
输出:061062063141143052
是否有任何预定义的Java方法或分类器可用于此操作?表示应将整数值格式化为八进制。例如:
System.out.printf("%03o", intValue);
03
使该值至少有3个字符长,左手带零。使用Integer.toOctalString(int)
我会说,将它们拆分为字符,将字符转换为整数,然后从中创建一个八进制字符串。例如Integer.toOctalString((int)“c')
。首先将字符转换为整数
,然后创建一个表示字符八进制值的字符串
因此,在您的示例中,如果您有一个字符串,您可以对字符串中的每个字符执行此操作。您不必对此进行明确的强制转换。(请记住,字符可以表示为整数,但我们在这里不这样做)
String s=“Hello World”;
对于(int i=0;i
还有第二个“错误”
您正在使用一个字符作为循环的数据类型。虽然这确实有效,但它不是为循环编制索引的正确数据类型。当您在字符串长度上编写循环时,您使用的是整数。循环中的整数表示索引
。在这种情况下,确实索引引用了字符串中的一个字符,但是在本例中仅适用。当我阅读该代码时,我希望您对在循环中创建的字符执行一些操作。不仅将其用作字符串的索引,您仍然需要循环,还需要整数.toOctalString()
将执行地图所执行的操作。尝试对每个字符应用Integer\toOctalString()
例如:
System.out.println(
"123abc*".chars()
.mapToObj( Integer::toOctalString )
.collect( Collectors.toList() ) );
System.out.println(
"123abc*".chars()
.mapToObj( c -> String.format( "%03o", c ) )
.collect( Collectors.toList() ) );
输出:[61、62、63、141、142、143、52]
编辑:
如果您想得到前导零,可以使用Andy Turner建议的String.format(“%03o”,c)
(为了完整起见,在这里重复一下)。但是,请注意,对于像中文字符一样的unicode字符,字符代码点可能会更高,因此3的长度可能不够(对于1
,您会得到类似061
的字符串,对于100226
的字符串肖代码>等)
例如:
System.out.println(
"123abc*".chars()
.mapToObj( Integer::toOctalString )
.collect( Collectors.toList() ) );
System.out.println(
"123abc*".chars()
.mapToObj( c -> String.format( "%03o", c ) )
.collect( Collectors.toList() ) );
输出:[0610621063141142143052]
错误是什么?使用Integer.toOctalString()怎么样
并将字符传递给该方法?没有错误,但对于每个字符,我必须在地图中输入一个条目,只是想知道是否有预定义的方法存在是的,有预定义的方法!@DylanMeeus这在CR上是离题的。他不是要求检查他的代码,他要求的是实现他想要的功能的内置功能他正在做什么。