我如何将十六进制值的数组列表传递给java中的char方法

时间:2019-02-17 00:57:28

标签: java arrays arraylist methods binary

在下面的方法中,我有一个十六进制值的文本文件,该文件传递到字符串数组列表中,我有一个工作方法,可将字符数组转换为标题为“ hexToBin”的二进制文件。

我目前陷入困境,我的问题是如何将arraylist中的每个十六进制值作为字符串传递,以便可以使用转换方法将十六进制值转换为二进制值。

不允许我使用Java的自动转换方法解析命令

hexadecimal text file ~
33CDAEFFAD
032DAE01AD
196CDAEFC0
21A00D0000
100CDAEFFA
F3ABCDEFAB
29A0EDF301
3ABCDEFABC


import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;

public class Main
{
    static void hexToBin(char hexdec[])
    {
        int i = 0;

        while (hexdec[i] != '\u0000')
        {
            switch (hexdec[i])
            {
                case '0':
                    System.out.print("0000");
                    break;
                case '1':
                    System.out.print("0001");
                    break;
                case '2':
                    System.out.print("0010");
                    break;
                case '3':
                    System.out.print("0011");
                    break;
                case '4':
                    System.out.print("0100");
                    break;
                case '5':
                    System.out.print("0101");
                    break;
                case '6':
                    System.out.print("0110");
                    break;
                case '7':
                    System.out.print("0111");
                    break;
                case '8':
                    System.out.print("1000");
                    break;
                case '9':
                    System.out.print("1001");
                    break;
                case 'A':
                    System.out.print("1010");
                    break;
                case 'B':
                    System.out.print("1011");
                    break;
                case 'C':
                    System.out.print("1100");
                    break;
                case 'D':
                    System.out.print("1101");
                    break;
                case 'E':
                    System.out.print("1110");
                    break;
                case 'F':
                    System.out.print("1111");
                    break;
                default:
                    System.out.print("\nInvalid hexadecimal digit " + hexdec[i]);
            }
            i++;
        }
    }

    public static void main(String[] args) throws IOException
    {
        Scanner sc = new Scanner(new File("RAMerrors8x4c"));
        ArrayList<String> values = new ArrayList<String>();
        while(sc.hasNext())
        {
            values.add(sc.nextLine());
        }

        for(int i = 0; i < values.size(); i++)
        {
            try {
                hexToBin(values.get(i).toCharArray());
            }
            catch (ArrayIndexOutOfBoundsException e){
                System.out.print("");
            }
        }
    }
}

0 个答案:

没有答案