将数字字符串转换为十六进制,二进制和十进制

时间:2013-11-12 15:35:26

标签: java arraylist binary decimal

我正在尝试回答以下问题:

  

使用数组或ArrayList并生成20个随机数(整数   0到100之间的值.100不包括在内)。该计划应该   执行以下任务。

     
      
  1. 将数组或ArrayList中的数字写入文件。

  2.   
  3. 从文件中读取数字,并以十进制,十六进制和二进制形式显示在控制台上。

  4.   

到目前为止,我已经将随机生成器运行良好,并且正在编写文件。至于重新读取文件并将文件中的数字显示为十六进制,十进制和二进制......我完全迷失了。这是我到目前为止。

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;


public class Write {

  public static void main(String[] args) throws IOException {

    Random generator = new Random();

    ArrayList numList = new ArrayList();

    int n = 0;

    while( n < 20 ) {
      int numGen = generator.nextInt(100);
      numList.add(numGen);
      n++;
    }        

    String result = numList.toString().replaceAll("[\\[\\]]", "");
    result = result.replace(",", " ");

    System.out.print(result);

    String filePath = "C:/Users/Username/Desktop/FileIOTest/coding_assignment.txt";
    File f = new File(filePath);
    FileOutputStream fileout = new FileOutputStream (f);

    DataOutputStream dataOut = new DataOutputStream(fileout);

    dataOut.writeBytes(result);

    dataOut.close();
  }      
} 

3 个答案:

答案 0 :(得分:0)

从您的代码中,您还没有开始编写从文件中读取数字的代码。

关于读取值,您可以使用BurreferReader逐行读取数字。然后,您可以使用String.split方法使用split(" ")

将数字拆分为数组

关于将int值转换为 Binary Hex 模式,您可以在toBinaryString类中使用toHexStringInteger方法,像

int i = 20;

System.out.println(i);//Print int value
System.out.println(Integer.toBinaryString(i)); //Print Binary string
System.out.println(Integer.toHexString(i)); // Print Hex string

Console中的输出如下:

20
10100
14

答案 1 :(得分:0)

我想你应该尝试自己完成这些行,所以我只给你一些基本的输入。

从文件中读取三行:

fileIn
dataIn
readBytes

这些线条应该很简单。要获取数字,请使用

split
Integer.ParseInt

要显示,您可以参考

Integer.toHexString
Integer.toBinaryString

答案 2 :(得分:0)

要将数字从基数10转换为二进制十六进制,您只需使用以下方法:

Integer.toBinaryString(n);
Integer.toHexString(n);

但是,如果您确实想自己编码,请尝试查看以下网站: http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/toBaseK.html

它有助于提供一种简单的算法,可以从基数10转换为任何其他数字基础。