Я жестко запрограммировал байтовый массив (это должны быть байты, а не целые числа из соображений пространства) и вызвал его для конструктора, который принимает байтовый массив:
это мой байт [] и конструктор из тестового файла.
byte[] b = {'7','8','9'};
MegaInt num4 = new MegaInt(b, false); //the second parameter is just a boolean to see if the number is negative or not
здесь он вызывается из конструктора в файле класса:
public MegaInt(byte[] inDigits, boolean isNeg)
{
inDigits.toString(); //tried turning to string here but doesn't make a difference
digits = new byte[inDigits.length]; //digits is a class (static final) variable
for (int i = 0; i < inDigits.length; i++)
{
digits[i] = inDigits[i];
}
if(digits == null || digits.length == 0 || (digits[0] == digits.length && digits[0] == digits['-']))
{
throw new IllegalArgumentException(s);
}
int validIndex = 0;
int leadingZeroCount = 0;
boolean leadingZero = true;
int stringLength = digits.length;
for (int j = 0; j < digits.length; j++)
{
System.out.print(digits[j] + ", "); //printing from here
}
isNegative = isNeg; //should this be elsewhere?
for (int i = 0; i < stringLength; i++)
{
byte b = digits[i]; //does not work for charAt
System.out.println(b);
if(!isValidDigit(b)) //gets here and throws exception because of the '55'.
{
throw new IllegalArgumentException(s);
}
if (leadingZero)
{
if (b != '0')
{
digits = new byte[stringLength - leadingZeroCount];
digits[validIndex] = (byte)Character.getNumericValue(b);
leadingZero = false;
}
else
{
leadingZeroCount++;
}
}
else
{
validIndex++;
digits[validIndex] = (byte)Character.getNumericValue(b);
}
}
if (leadingZero) //if there is only 1 zero in the array.
{
digits = new byte[1];
digits[0] = 0;
isNegative = false;
}
private boolean isValidDigit(byte b) //checks if digits are proper for Byte constructors.
{
byte[] search = {1,2,3,4,5,6,7,8,9,0};
for (int j = 0; j < search.length; j++)
{
if (b == search[j])
{
return true; //for valid digits.
}
}
return false;
}
это то, что он возвращает:
55,56,57,55
Я полагаю, что это должно быть какое-то байтовое представление (я не думаю, что это двоичное или шестнадцатеричное?), Но, очевидно, это не то, что я хочу, как я могу получить это использовать цифры, которые я жестко закодировал? ИЛИ Я правильно инициализирую массив байтов? Почему он возвращает 4 числа, когда в массиве только три? Я чувствую, что это очень простая проблема, и все же я не нахожу ничего интересного в Интернете, поэтому я надеюсь, что найдется кто-то, кто может помочь!