API中用于在碱基之间转换的方法是什么?

use*_*178 5 java api integer base

您可以使用什么方法在Java中进行基数转换?它类似于IntegerToBase(int,base),但我不记得了.

Mil*_*dis 14

从字面上看,整数值不会从一个基数转换为另一个基数.感谢von Neumann,他是计算的先驱之一,他认为尝试在二进制电路上使用基数10算法的想法没有多大意义,整数以二进制格式存储,我们并没有试图改变它:-)我们是什么所谓的是将它们转换为在某些基础上表示它们的字符串(其他基础10是默认值),并将字符串转换为除(默认)基数10以外的基数中的整数.必要的工具是Integer类的静态方法.

  • Java提供Integer.toString(int i, int radix)转换函数,它接受整数和基数(基数)并在该基数中返回该整数的字符串表示.

    String hexRepr = Integer.toString(255, 16)  // returns "FF"
    
    Run Code Online (Sandbox Code Playgroud)
  • 换句话说,即从表示不同基数中的数字的字符串出发 Integer.parseInt(String s, int radix)

    int myNum = Integer.parseInt("FF", 16)  // returns 255
    
    Run Code Online (Sandbox Code Playgroud)
  • 要将表示为基本radix1字符串的数字转换为基本radix2字符串表示形式,刚才提到的两种方法必须合并,如以下示例所示:

    int radix1 = 16;  // The input will be parsed assuming base 16 representation
    int radix2 = 4;   // The result will be output using a base 4 representation
    String input = "FF"; // which in base 16 represents the number 255 
    String converted = Integer.toString(Integer.parseInt(radix1Representation, radix1),radix2);  /// returns "3333"  which in base 4 is the number 255
    
    Run Code Online (Sandbox Code Playgroud)

更多细节可以在API文档中找到.我在这里包含了一些内容,以确保读者在使用这些方法时也能看到他们需要注意的事项.


public static String toString(int i, int radix)
Run Code Online (Sandbox Code Playgroud)

此方法返回第二个参数指定的基数中第一个参数的字符串表示形式.

如果基数小于Character.MIN_RADIX或大于Character.MAX_RADIX,则使用基数10代替.

如果第一个参数为负数,则结果的第一个元素是ASCII减去字符'-'('\u002D').如果第一个参数不是负数,则结果中不会出现符号字符.

结果的剩余字符表示第一个参数的大小.如果幅度为零,则由单个零字符'0'('\u0030')表示; 否则,幅度表示的第一个字符将不是零字符.以下ASCII字符用作数字:

0123456789abcdefghijklmnopqrstuvwxyz 
Run Code Online (Sandbox Code Playgroud)

这些都是'\u0030'通过'\u0039''\u0061'通过'\u007A'.如果radix为N,则这些字符的前N个按所示顺序用作基数-N数字.因此,十六进制(基数16)的数字是0123456789abcdef.如果需要大写字母,String.toUpperCase()可以在结果上调用该方法:

Integer.toString(n, 16).toUpperCase() 
Run Code Online (Sandbox Code Playgroud)

资料来源:http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#toString%28int,%20int%29


public static int parseInt(String s, int radix) throws NumberFormatException
Run Code Online (Sandbox Code Playgroud)

此方法将字符串参数解析为第二个参数指定的基数中的有符号整数.字符串中的字符必须都是指定基数的数字(由是否Character.digit(char, int)返回非负值确定),除了第一个字符可能是ASCII减号'-'('\u002D')表示负值或ASCII加号'+'('\u002B')到表示正值.返回结果整数值.

如果发生以下任何一种情况,则抛出NumberFormatException类型的异常:

  • 第一个参数是null或是一个长度为零的字符串.

  • 基数小于Character.MIN_RADIX或大于Character.MAX_RADIX.

  • 字符串的任何字符都不是指定基数的数字,除了第一个字符可以是减号'-'('\u002D')或加号'+'('\u002B'),前提是字符串长度超过长度1.

  • 字符串表示的值不是int类型的值.

例子:

parseInt("0", 10)           // returns 0
parseInt("473", 10)         // returns 473
parseInt("+42", 10)         // returns 42
parseInt("-0", 10)          // returns 0
parseInt("-FF", 16)         // returns -255
parseInt("1100110", 2)      // returns 102
parseInt("2147483647", 10)  // returns 2147483647
parseInt("-2147483648", 10) // returns -2147483648
parseInt("2147483648", 10)  // throws NumberFormatException
parseInt("99", 8)           // throws NumberFormatException
parseInt("Kona", 10)        // throws NumberFormatException
parseInt("Kona", 27)        // returns 411787
Run Code Online (Sandbox Code Playgroud)

资料来源:http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt%28java.lang.String,%20int%29

  • +1是第一个清楚地表明整数本身不需要在基数之间转换的人.它只是变化的字符串表示. (2认同)

dre*_*ash 3

例如,您可以使用Integer.parseInt("101", 2)它,它会给您 5(对应的十进制数)。

返回一个 Integer 对象,该对象保存使用第二个参数给定的基数进行解析时从指定 String 中提取的值。第一个参数被解释为表示第二个参数指定的基数中的有符号整数,就像将参数提供给 parseInt(java.lang.String, int) 方法一样。结果是一个 Integer 对象,表示字符串指定的整数值。换句话说,此方法返回一个 Integer 对象,其值等于:( source )

new Integer(Integer.parseInt(s, radix))
Run Code Online (Sandbox Code Playgroud)

从同一来源,您还可以得到:

public static String toString(int i,int radix)
Run Code Online (Sandbox Code Playgroud)

返回第二个参数指定的基数中第一个参数的字符串表示形式。

因此,如果您想从二进制转换为十进制

Integer.parseInt(binary_number_in_string, 2);
Run Code Online (Sandbox Code Playgroud)

如果你想从十进制转换为二进制

System.out.println(Integer.toString(2,2));
Run Code Online (Sandbox Code Playgroud)

要从其他基数转换为十进制,反之亦然,您只需更改基数参数即可。


请注意,Integer 类已经有一些默认的对话方法,例如:

public static String toBinaryString(int i) 
Run Code Online (Sandbox Code Playgroud)

返回整数参数的字符串表示形式,作为基数为 2 的无符号整数 ( source )。

public static String toHexString(int i) 
Run Code Online (Sandbox Code Playgroud)

将整数参数的字符串表示形式返回为以 16 为基数的无符号整数 ( source )。

public static String toOctalString(int i) 
Run Code Online (Sandbox Code Playgroud)

将整数参数的字符串表示形式返回为以 8 为基数的无符号整数 ( source )。

从上述方法的返回类型可以看出,基数之间转换的不是整数。这些方法返回整数传递给定基数中的字符串表示形式作为参数。