我如何"添加"一个整数到Java字节数组的末尾?

时间:2015-11-16 17:41:44

标签: java

说我有一个字符串

String myString = "the quick brown fox jumps over the lazy dog";

我将其转换为字节数组

byte[] myByteArray = myString.getBytes();

然后,说我有一个int

int myInt = 42;

我将其转换为字节

byte myByte = (byte) myInt;

现在,说我想将int添加到字节数组中,以便在打印数组时打印出来

the quick brown fox jumps over the lazy dog42

我尝试了这个,但它没有工作

byte[] newByteArray = new byte[myByteArray.length + 1];
System.arraycopy(myByteArray, 0, newByteArray, 0, myByteArray.length);
newByteArray[newByteArray.length-1] = myByte;
String finalString = new String(newByteArray);
System.out.println(finalString);

打印出的所有内容都是

the quick brown fox jumps over the lazy dog*

' *'是ASCII字符42。

那么,最简​​单的方法是什么?

修改

是的,我知道我可以附加字符串" 42"到我的其他字符串,但我希望存储在字节数组中的整数值。我假设一个字节是一个字节,并且它是一个字符串还是一个int并不重要,因为字节是引擎盖下的1和0。

3 个答案:

答案 0 :(得分:1)

怎么样:

String myString = "the quick brown fox jumps over the lazy dog";
int myInt = 42;
String temp = myString + String.valueOf(myInt);
byte[] myByteArray = temp.getBytes();

答案 1 :(得分:0)

更新了答案,以便绕过字符集编码,并假设需要获取字符:

            String numString = String.valueOf (newInt);
            String newString  = myString + newInt;
            int newLength = myString.length() + numString.length();
            char[] newCharArray = new char[newLength];

            newString.getChars(0, newLength, newCharArray, 0);

大卫的评论:

     String newString  = myString + newInt;
     char[] newCharArray = newString.toCharArray();

答案 2 :(得分:0)

最简单的方法是将int附加到字符串的末尾:

myString = myString + myInt;

否则,您需要将字符'4''2'的字节附加到扩展的字节数组中,如Sotirios Delimanolis建议的那样。

我想补充一点,使用myString.getBytes()是一个非常糟糕的主意。 getBytes()方法使用默认的平台编码,该编码可能因系统而异,从JVM到JVM,甚至可以运行运行。您应该始终更喜欢以Charset作为参数的版本,以便您知道您将获得的内容,例如:

myString.getBytes(StandardCharsets.UTF_8);

或者我想说,始终假设默认平台编码是EBCDIC并采取相应行动。