Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串放入字节数组_Java_Arrays_String_Byte - Fatal编程技术网

Java 将字符串放入字节数组

Java 将字符串放入字节数组,java,arrays,string,byte,Java,Arrays,String,Byte,我创建了字节数组,但不知道这是否是将数字字符串放入其中的方式。我是这个字节数组的新手,不知道我是否做对了 public class AdditionOnlyInt implements BigInt { private byte[] data; public AdditionOnlyInt(String number) { data = new byte[number.length()]; number.replace("0","");

我创建了字节数组,但不知道这是否是将数字字符串放入其中的方式。我是这个字节数组的新手,不知道我是否做对了

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++;
        }

    }
}
public类AdditionOnlyInt实现BigInt
{
专用字节[]数据;
公共AdditionOnlyInt(字符串编号)
{ 
数据=新字节[number.length()];
编号。替换(“0”和“);
int i=0;
int计数器=number.length();

虽然(我试试这个..

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--)));
             }

      }
     }
这是一个bug:

number.replace("0","");
首先,它不做任何事情:String是不可变的,因此所有String方法都返回一个新字符串,因此必须指定返回值:

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

进行这些更改,看看是否更接近。

Uhm…为什么要尝试“将一串数字放入字节数组”?这是否正确取决于理解它是否真的是你想要做的…我的错读错了我知道有些事情不对我怀疑你是否做了你想做的事情,因为通过强制转换为字节的字符
'0'
应该得到48(请参阅)为什么不使用
getBytes()
之所以使用函数?length()-1,是因为数组的索引从0开始。num.charAt(计数器--)返回一个char值,并且char值通过string.valuOf()方法在字符串中转换。