【问题标题】:How to convert a byte in binary representation into int in java如何将二进制表示中的字节转换为java中的int
【发布时间】:2014-03-10 06:36:31
【问题描述】:

我有一个带有字节值的 String[]

String[] s = {"110","101","100","11","10","1","0"};

遍历s,我想从中取出int值。

我正在使用这个

Byte b = new Byte(s[0]); // s[0] = 110
int result = b.intValue(); // b.intValue() is returning 110 instead of 6

据此,我试图得到结果,{6, 5, 4, 3, 2, 1}

我不知道从这里去哪里。我能做什么?

谢谢各位。问题已回答。

【问题讨论】:

    标签: java string int byte


    【解决方案1】:

    您可以使用重载的Integer.parseInt(String s, int radix) 方法进行此类转换。这样你就可以跳过Byte b = new Byte(s[0]); 这段代码。

    int result = Integer.parseInt(s[0], 2); // radix 2 for binary
    

    【讨论】:

      【解决方案2】:

      您正在使用 Byte 构造函数,它只接受 String 并将其解析为 十进制 值。我认为您实际上想要Byte.parseByte(String, int),它允许您指定基数:

      for (String text : s) {
          byte value = Byte.parseByte(text, 2);
          // Use value
      }
      

      请注意,我使用了基本的Byte 值(由Byte.parseByte 返回)而不是Byte 包装器(由Byte.valueOf 返回)。

      当然,您同样可以使用Integer.parseIntShort.parseShort 而不是Byte.parseByte。不要忘记 Java 中的字节是有符号的,所以你只有 [-128, 127] 的范围。特别是,您无法使用上面的代码解析“10000000”。如果您需要 [0, 255] 的范围,您可能需要改用 shortint

      【讨论】:

        【解决方案3】:

        您可以使用Integer#parseInt() 方法直接将String bindery 转换为十进制表示。无需转换为字节然后转换为十进制

        int decimalValue = Integer.parseInt(s[0], 2);
        

        【讨论】:

          【解决方案4】:

          您应该使用Byte b = Byte.valueof(s[i], 2)。现在它解析字符串,将其视为十进制值。您应该使用 valueOf 并将 2 作为基数传递。

          【讨论】:

            【解决方案5】:

            跳过Byte 步骤。只需使用 Integer.parseInt(String s, int radix) 将其解析为 int:

            int result = Integer.parseInt(s[0], 2);
            

            2 指定基数 2,而您使用的代码将输入字符串视为十进制。

            【讨论】:

              猜你喜欢
              • 2013-09-07
              • 2011-01-25
              • 2012-07-16
              • 2017-04-03
              • 1970-01-01
              • 2013-01-30
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多