在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) 我有二进制字符串String A = "1000000110101110".我想将此字符串转换为长度为2的字节数组java
我已经接受了这个链接的帮助
我试图通过各种方式将其转换为字节
我先将该字符串转换为十进制,然后将代码应用于存储到字节数组中
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来获取字节数组
我有一个非常大的字符串(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 并且该函数抛出了一个数字格式异常将不胜感激谢谢!!!
我正在将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()的定义,以确定这个类的确切原因 - 也许连接到符号扩展?
我有一个大的二进制字符串"101101110 ...",我试图将它存储到一个字节数组.这样做的最佳方式是什么?
可以说我有largeString ="0100111010111011011000000001000110101"
我正在寻找的结果:
[78,187,96,17,21]
01001110 10111011 01100000 00010001 10101
我尝试过的:
byte[] b= new BigInteger(largeString,2).toByteArray();
但它没有给我我想要的结果......
作为输入,我有二进制字符串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 ×6
string ×3
arrays ×2
binary ×2
binary-data ×2
bytearray ×2
biginteger ×1
bitset ×1
byte ×1
printing ×1