相关疑难解决方法(0)

打印Java数组最简单的方法是什么?

在Java中,数组不会覆盖toString(),因此如果您尝试直接打印数组,则会获得className + @ + className数组的十六进制,如下所示hashCode:

int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray);     // prints something like '[I@3343c8b3'
Run Code Online (Sandbox Code Playgroud)

但通常我们实际上想要更像的东西Object.toString().这样做最简单的方法是什么?以下是一些示例输入和输出:

// Array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};
//output: [1, 2, 3, 4, 5]

// Array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};
//output: [John, Mary, Bob]
Run Code Online (Sandbox Code Playgroud)

java printing arrays

1852
推荐指数
20
解决办法
217万
查看次数

如何将二进制字符串转换为java中2字节的字节数组

我有二进制字符串String A = "1000000110101110".我想将此字符串转换为长度为2的字节数组java

我已经接受了这个链接的帮助

我试图通过各种方式将其转换为字节

  1. 我先将该字符串转换为十进制,然后将代码应用于存储到字节数组中

    int aInt = Integer.parseInt(A, 2);
            byte[] xByte = new byte[2];
        xByte[0] = (byte) ((aInt >> 8) & 0XFF);
        xByte[1] = (byte) (aInt & 0XFF);
        System.arraycopy(xByte, 0, record, 0,
                xByte.length);
    
    Run Code Online (Sandbox Code Playgroud)

但是存储到字节数组中的值是负数

xByte[0] :-127
xByte[1] :-82
Run Code Online (Sandbox Code Playgroud)

哪个是错误的值.

我也试过用

byte[] xByte = ByteBuffer.allocate(2).order(ByteOrder.BIG_ENDIAN).putInt(aInt).array();
Run Code Online (Sandbox Code Playgroud)

但它会在上面的行中引发异常

  java.nio.Buffer.nextPutIndex(Buffer.java:519)     at
  java.nio.HeapByteBuffer.putInt(HeapByteBuffer.java:366)   at
  org.com.app.convert.generateTemplate(convert.java:266)
Run Code Online (Sandbox Code Playgroud)

我现在该怎么做才能将二进制字符串转换为2字节的字节数组?是否有任何内置函数java来获取字节数组

java binary byte bytearray binary-data

6
推荐指数
1
解决办法
5058
查看次数

1 和 0 的大字符串到 BitSet

我有一个非常大的字符串(64 个字符),其中包含 1 和 0。样品 - 10011111111010100111011010111001010010101110001011111011110001000

我想要的只是将它转换为 BitSet var,其中在我使用的函数的相同位置包含 1 和 0 -

private static BitSet fromString(String binary) {
        return BitSet.valueOf(new long[] { Long.parseLong(binary, 2) });
}
Run Code Online (Sandbox Code Playgroud)

并且已经经历了 - Java BitSet 示例 我实际上已经解决了这个问题,那就是我的第 64 位是 1 并且该函数抛出了一个数字格式异常将不胜感激谢谢!!!

java string bitset

6
推荐指数
1
解决办法
4613
查看次数

BigInteger.toByteArray()返回有目的的前导零?

我正在将bigints转换为二进制,radix16和radix64编码,并看到神秘的msb零填充.这是一个大问题,我可以通过剥离零填充或者做其他事情来解决这个问题吗?

我的测试代码:

    String s;
    System.out.printf( "%s length %d\n", s = "123456789A", (new BigInteger( s, 16 )).toByteArray().length );
    System.out.printf( "%s length %d\n", s = "F23456789A", (new BigInteger( s, 16 )).toByteArray().length );
Run Code Online (Sandbox Code Playgroud)

产生输出:

    123456789A length 5
    F23456789A length 6
Run Code Online (Sandbox Code Playgroud)

其中较长的阵列在前面没有填充.检查BigInteger.toByteArray()后,我看到:

public byte[] toByteArray() {
    int byteLen = bitLength()/8 + 1;
    byte[] byteArray = new byte[byteLen];
Run Code Online (Sandbox Code Playgroud)

现在,我可以找到private int bitLength;,但是我无法找到bitLength()的定义,以确定这个类的确切原因 - 也许连接到符号扩展?

java biginteger

5
推荐指数
2
解决办法
6992
查看次数

如何将大型二进制String转换为字节数组java?

我有一个大的二进制字符串"101101110 ...",我试图将它存储到一个字节数组.这样做的最佳方式是什么?

可以说我有largeString ="0100111010111011011000000001000110101"

我正在寻找的结果:

[78,187,96,17,21]

01001110 10111011 01100000 00010001 10101

我尝试过的:

byte[] b= new BigInteger(largeString,2).toByteArray();

但它没有给我我想要的结果......

java string binary bytearray

2
推荐指数
1
解决办法
5569
查看次数

如何在Java中有效地将二进制字符串转换为二进制字节数组?

作为输入,我有二进制字符串String a = "100110".作为输出,我需要有二进制字节数组byte[] b = {1,0,0,1,1,0}.现在我正在使用

for (int i=0; i<a.length; i++) { b[i]= Byte.parseByte(a.substring(i, i+1)); }

但这种方法太慢了.任何人都可以给出更好的建议吗?谢谢

java arrays string binary-data

2
推荐指数
2
解决办法
3414
查看次数

标签 统计

java ×6

string ×3

arrays ×2

binary ×2

binary-data ×2

bytearray ×2

biginteger ×1

bitset ×1

byte ×1

printing ×1