繁体   English   中英

如何将整数“添加”到Java字节数组的末尾?

[英]How do I “add” an integer onto the end of a Java byte array?

说我有一个字符串

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”附加到其他字符串中,但是我希望将整数值存储在字节数组中。 我当时以为字节是字节,并且假设它是String还是int都没有关系,因为字节实际上是1s和0s。

怎么样:

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

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

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

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

myString = myString + myInt;

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

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

myString.getBytes(StandardCharsets.UTF_8);

或就像我想说的, 始终假定默认平台编码为EBCDIC并采取相应措施。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM