[英]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.