0

我遇到了砖墙,我不知道如何继续。

快速总结:我的代码假设将 4 个十六进制字符串(ramError1-4)手动转换为二进制。我希望能够循环 4 次,并且每次创建一个唯一的 StringBuilder 以继续下一步。

在过去的两天里,我一遍又一遍地尝试让它工作但没有成功。任何意见,将不胜感激。这是我没有失败循环的代码。Hex2 作为测试工作,但我希望能够循环通过 HexCodes 1-4(ramError1-4)

那么如何在创建 StringBuilder 时循环 Hex1-4 呢?

注意:ramErrors1-4 中确实包含我之前通过读取文件在代​​码中添加的字符串。

    String Hex1=ramError1;
    String Hex2=ramError2;
    String Hex3=ramError3;
    String Hex4=ramError4;

    StringBuilder hexstring1 = new StringBuilder();
    StringBuilder hexstring2 = new StringBuilder();
    StringBuilder hexstring3 = new StringBuilder();
    StringBuilder hexstring4 = new StringBuilder();


    for (int x = 0; x <= 8; x++)
    {

    if (Hex2.charAt(x) == 'A')
    {
        hexstring1.append("1010");

    }
    else if (Hex2.charAt(x) == 'B')
    {
        hexstring1.append("1011");

    }
    else if (Hex2.charAt(x) == 'C')
    {
        hexstring1.append("1100");
    }
    else if (Hex2.charAt(x) == 'D')
    {
        hexstring1.append("1101");
    }
    else if (Hex2.charAt(x) == 'E')
    {
        hexstring1.append("1110");
    }
    else if (Hex2.charAt(x) == 'F')
    {
        hexstring1.append("1111");
    } 
    else if (Hex2.charAt(x) == '0')
    {
        hexstring1.append("0000");
    }
    else if (Hex2.charAt(x) == '1')
    {
        hexstring1.append("0001");
    }
    else if (Hex2.charAt(x) == '2')
    {
        hexstring1.append("0010");
    }
    else if (Hex2.charAt(x) == '3')
    {
        hexstring1.append("0011");
    }
    else if (Hex2.charAt(x) == '4')
    {
        hexstring1.append("0100");
    }
    else if (Hex2.charAt(x) == '5')
    {
        hexstring1.append("0101");
    }
    else if (Hex2.charAt(x) == '6')
    {
        hexstring1.append("0110");
    }
    else if (Hex2.charAt(x) == '7')
    {
        hexstring1.append("0111");
    }
    else if (Hex2.charAt(x) == '8')
    {
        hexstring1.append("1000");
    }
    else if (Hex2.charAt(x) == '9')
    {
        hexstring1.append("1001");
    }
    else
    {
        System.out.println("error at char" + x );
    }
    }

    System.out.println("Hex To Binary is " + hexstring1.toString());
    System.out.println("Hex To Binary is " + hexstring2.toString());
    System.out.println("Hex To Binary is " + hexstring3.toString());
    System.out.println("Hex To Binary is " + hexstring4.toString());

维米娜 3994433

4

2 回答 2

0

考虑为Hex

String hexes [] = new String []{ramError1, ramError2, ramError3, ramError4};

然后将您for loop移至新方法

StringBuilder doMyStuff (String hex) {

     StringBuilder bld = new StringBuilder ();

     for (int x = 0; x <= 8; x++)
     ....
}

然后可以调用

  for (int loop = 0; loop < hexes.length; loop++) {

        StringBuilder result = doMyStuff (hexes[loop]);
于 2014-11-11T04:46:49.907 回答
0

这不是将十六进制字符串转换为二进制的最佳方式。Java 已经提供了许多实用功能:

long value = Long.parseInt(hexString, 16);
String result = Long.toBinaryString(value);

if (result.length() < 32)
{
  // pad with zeroes
}

关于你的具体问题,你需要循环和数组来做你需要的事情,比如

String[] hexStrings = new String[] { hexString1, hexString2, ... }
StringBuilder builders = new StringBuilder[4];

for (int i = 0; i < 4; ++i)
{
  builders[i] = new StringBuilder();
  String currentHext = hexStrings[i];

  for (int x = 0; x < 8; ++x)
  {
    ..
于 2014-11-11T04:47:01.393 回答