将字符串放入字节数组

问题描述:

我创建了字节数组,但不知道这是否是将数字串放入它的方式。我是这个字节数组的新手,并且很难知道我是否做得对。将字符串放入字节数组

public class AdditionOnlyInt implements BigInt 
{ 
    private byte[] data; 

    public AdditionOnlyInt(String number) 
    { 
     data = new byte[number.length()]; 
     number.replace("0",""); 

     int i = 0; 
     int counter = number.length(); 

     while(i<number.length()) 
     { 
      data[i] = (byte) number.charAt(counter); 
      i++; 
     } 

    } 
} 

我必须摆脱前导零的然后把从至少显著最显著数量的数组中的是计数器变量的原因

+0

呃......你为什么要“把一串数字放进一个字节数组”?这是否正确是在了解它是否实际上是你想要做或不... – keshlam

+0

我的错读了错误的东西我知道什么是不对的 – user3288719

+0

我怀疑你做了你想要的,因为字符''0 ''通过转换转换为'byte'应该导致48(请参阅[asciitable](http://www.asciitable.com/)) – zapl

试试这个..

public class AdditionOnlyInt implements BigInt 
    { 
    private byte[] data; 



    public AdditionOnlyInt(String number) 
     { 
     data = new byte[number.length()]; 
     String num=number.replace("0",""); 
     int i = 0; 
     int counter = number.length()-1; 
     while(counter>=0) 
      { 
       data[i++] = Byte.parseByte(String.valueOf(num.charAt(counter--))); 
      } 

     } 
    } 
+0

length() - 1被使用,因为数组的索引从0开始。 num.charAt(counter--)返回一个char值,并且char值由String.valuOf()方法转换为字符串。 –

嗯,这是一个错误:

number.replace("0",""); 

首先,它没有做任何事情:字符串是不变的,所以所有的字符串方法返回一个新的字符串,所以你必须分配返回值:

number = number.replace("0",""); 

其次,这与删除所有零 - 领先或以其他方式。不是你想要的。要删除领先零,这样做:

number = number.replaceAll("^0+",""); 

它使用正则表达式,只是针对前导零。

最后,如果你想表示一个号码的数字,使用int[]并获得一个字符,减去的整数值“0”:

int[] data; 

data[i] = number.charAt(counter) - '0'; // '0' --> 0, '1' --> 1, '2' --> 2 etc 

使这些变化,看看你靠近点。