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()方法在字符串中转换。