1

我想在 Byte[] 中创建后检索一个基本数字

     public static void main(String[] args) throws IOException {
           LinkedList<Byte> s1 = new LinkedList<Byte>();
           String a = "0.111112345";
           for (byte bb : a.getBytes()) {
                s1.add(bb);
            }
 //how to retrieve "0.111112345"; from s1 ?

}

在 Byte[] 中取得我的号码后检索我的号码?

4

4 回答 4

2

我认为您正在使用Byte[]代替byte[]

    byte[] t = (byte[]) s1.subList(0, 3).toArray();
    System.out.println(convertByteToInt(t));

此外,您可能希望使用parse()将字符串转换为数字,例如:

    String intString= new String(t); //<--get String from byte array
    int numInt = Integer.parseInt(intString);
于 2012-10-26T15:33:12.000 回答
1

AByte[]不是 a byte[],但你不需要使用链表和子列表,你可以纯粹用 来做byte[],比如

public static void main(String[] args) throws IOException {
  String a = "0.111112345";
  byte[] allBytes = a.getBytes("UTF-8");
  byte[] t = Arrays.copyOf(allBytes, 4);
  System.out.println(convertByteToInt(t));
}

java.util.Arrays.copyOf返回给定数组的初始段的副本,该数组被截断或用零扩展至给定长度。

这应该打印结果808333617,它是十六进制的十进制表示302E3131(字符零、点、一、一的 UTF-8 字节)。

于 2012-10-26T15:29:10.923 回答
0

重写这一行:

Byte[] t = (Byte[]) s1.subList(0, 3).toArray();

如下:

Byte[] t = s1.subList(0, 3).toArray(new Byte[3]);

方法toArray()返回Object[]。但是,方法toArray(array)返回作为参数传递给它的数组,或者,如果该数组不够长,则返回相同类型的其他数组。

于 2012-10-26T15:25:52.400 回答
0

Byte[] t = s1.subList(0, 3).toArray(new Byte[3]); 然后,看看这个 BigInteger 构造函数public BigInteger(byte[] val)

然后,使用: int intValue();

于 2012-10-26T15:30:54.367 回答