我有一个Java字符串"Hi\n"
,我想转换到byte[]
,但是当我有一个变量,其内容是"Hi\n"
和我打电话variable.getBytes(StandardCharsets.UTF_8)
的\
,并n
分别分析,而不是一起作为一个换行符,所以我在阵列中有4个字节的结束而比预期的 3 个字节。
如何正确执行此转换?
编辑:添加了截图。我在我调用的地方设置了一个断点getBytes()
,并在payload
is评估表达式"hi\n"
,并且评估返回了byte[]
4 个字节的 a。"hi\n".getBytes(StandardCharsets.UTF_8)
然而,当我直接这样做时,我得到了 3 个字节,这让我感到困惑。
我的菜鸟错误。问题是因为该"Hi\n"
示例是String
来自 Android的用户输入EditText
而不是真正的String
文字,所以反斜杠\
已经被转义\\
,因此它的实际内容String
是["H", "i", "\\", "n"]
. 我添加了一些代码来进行输入清理:
// Assume payload is content of an EditText which the user has entered "Hi\n" in
payloadInBytes = payload.replace("\\n", "\n").getBytes(StandardCharsets.UTF_8);
在这之后payloadInBytes
是预期的 3 个字节。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句