说我有一个字符串
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。
答案 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并采取相应行动。