在BluetoothChat源代码中,我无法理解代码的某些部分 -
private void sendMessage(String message) {
// Check that we're actually connected before trying anything
if (mChatService.getState() != BluetoothChatService.STATE_CONNECTED) {
Toast.makeText(this, R.string.not_connected, Toast.LENGTH_SHORT).show();
return;
}
// Check that there's actually something to send
if (message.length() > 0) {
// Get the message bytes and tell the BluetoothChatService to write
byte[] send = message.getBytes();
mChatService.write(send);
// Reset out string buffer to zero and clear the edit text field
mOutStringBuffer.setLength(0);
mOutEditText.setText(mOutStringBuffer);
}
}
在这里,我强调byte[] send
是一个数组,但无法理解我为什么要初始化这个数组= message.getBytes();
可能是一个非常愚蠢的问题,但由于我是初学者所以我认为我应该清楚这一部分。 Java专家需要你的建议。
答案 0 :(得分:0)
'send'必须是一个字节数组,因为mChatService.write()方法接受字节数组。 您可以在以下问题上阅读更多内容: Java Byte Array to String to Byte Array
答案 1 :(得分:0)
聊天服务发送二进制数据,即字节。
在java文本中(String,char,Reader / Writer)是一个黑盒子的Unicode文本,因此可以组合各种脚本和语言。
要获取特定编码的字节,请执行以下操作:
String s = "...";
byte[] b = s.getBytes(s, encoding);
这些字节在给定的编码中。
并逆转:
s = new String(b, encoding);
没有编码的String.getBytes()
版本可能会导致错误:它使用默认的平台编码,该编码因计算机而异。
最好以Unicode格式返回字节,如UTF-8。
byte[] b = s.getBytes(StandardCharsets.UTF_8);