在Java中,如何将数字(作为字符串)转换为字节数组?

在Java中,如何将数字(作为字符串)转换为字节数组?,java,arrays,string,bytearray,converter,Java,Arrays,String,Bytearray,Converter,我正在为一个java项目创建一个特定于方法的方法。 给定的UML指定返回类型为静态字节[],它接受参数(字符串,字节) 到目前为止,看起来是这样的: public static byte[] convertNumToDigitArray(String number, byte numDigits) { } public static byte[] convertNumToDigitArray(String number) { if (number != null &&

我正在为一个java项目创建一个特定于方法的方法。 给定的UML指定返回类型为
静态字节[]
,它接受参数
(字符串,字节)

到目前为止,看起来是这样的:

public static byte[] convertNumToDigitArray(String number, byte numDigits) {

}
public static byte[] convertNumToDigitArray(String number) {
    if (number != null && number.matches("\\d*") {
        byte[] result = new byte[number.length()];
        for (int i = 0; i < number.length(); i++) {
            result[i] = Byte.parseByte("" + number.charAt(i));
        }
        return result;
    } else {
        throw new IllegalArgumentException("Input must be numeric only");
    }
}
此方法应将数字(作为字符串)转换为字节数组。排序必须从最高有效位到最低有效位。例如,如果 数字字符串为“732”,则数组的索引0应包含7。
最后一个参数(numDigits)应与 字符串传入


如何执行此操作?

可以使用
charAt()
检索字符串中的每个字符。可以通过减法将字符转换为其数字值,例如:

char c = number.charAt(0);
byte b = c - '0';

我不会使用第二个参数并执行以下操作:

public static byte[] convertNumToDigitArray(String number, byte numDigits) {

}
public static byte[] convertNumToDigitArray(String number) {
    if (number != null && number.matches("\\d*") {
        byte[] result = new byte[number.length()];
        for (int i = 0; i < number.length(); i++) {
            result[i] = Byte.parseByte("" + number.charAt(i));
        }
        return result;
    } else {
        throw new IllegalArgumentException("Input must be numeric only");
    }
}
公共静态字节[]convertNumToDigitArray(字符串编号){
如果(number!=null&&number.matches(\\d*)){
字节[]结果=新字节[number.length()];
对于(int i=0;i
我不明白为什么我们需要这么复杂的代码

仅仅使用JDK附带的方法有什么错

public static byte[] convertNumToDigitArray(String number, byte numDigits) {
    byte[] bytes = number.getBytes();
    Arrays.sort(bytes);
    return bytes;
}

如果排序不是你的意思,只需删除那一行。

如果可以从
number
的值推断出
numDigits
的值,为什么两者都是必需的?是的,这当然是一个很好的技巧;太多人试图使用
Integer.parseInt
(或类似的东西)来实现这一点。是否将使用getBytes()方法在升序索引中存储“number”的每个数字?