Java Json/字符串/字节转换操作(将字节发送到套接字)
我在将JSON对象转换为字节时遇到问题。我需要像这样的东西:Java Json/字符串/字节转换操作(将字节发送到套接字),java,android,json,sockets,Java,Android,Json,Sockets,我在将JSON对象转换为字节时遇到问题。我需要像这样的东西: aJsonObject = new JSONObject(); // ...put somethin string msg; msg = aJsonObject.toString(); count = msg.countBytes(); //calculate how many bytes will string `msg` take 然后我需要将count转换为2元素字节数组,实际上我需要将16位int发送到socket,将ms
aJsonObject = new JSONObject();
// ...put somethin
string msg;
msg = aJsonObject.toString();
count = msg.countBytes(); //calculate how many bytes will string `msg` take
然后我需要将count转换为2元素字节数组,实际上我需要将16位int发送到socket,将msg转换为count元素字节数组,将它们链接在一起并发送到TCP socket
对我来说,最复杂的是将计数精确地放在16位上
完全一样,我需要做相反的事情。获取2个字节,使其为int,然后从套接字读取int字节,并最终将其转换为json
如果有任何帮助,我将不胜感激。提前感谢。Java字符串使用UTF-16编码。要将字符串转换为字节数组,只需调用String.getBytes方法,指定所需的字节编码,如UTF-8。然后读取数组的长度
要反转此过程,只需将字节传递给字符串构造函数,并指定相同的字节编码:
bytes[] bytes = ...;
String msg = new String(bytes, StandardCharsets.UTF_8);
// use msg as needed...
谢谢你的回答!字符串转换问题已解决。让int count正好放在2个字节上怎么样?@Pandita假设字节计数总是相同的,我觉得没那么简单。我的意思是我需要使int count成为16位大的uint16无符号整数。@Pandita我知道你想要什么。我所说的将有助于缩短播放时间并没有奏效,但我找到了解决方案:int count=bytes.length;字节[]数据=新字节[2];数据[0]=字节计数&0xFF;数据[1]=字节计数>>8&0xFF;然后我将其发送到ByteArrayOutputStream,将其与msg字节连接,并使用DataOutputStream.writebytearray发送整个字节数组。非常感谢你!
bytes[] bytes = ...;
String msg = new String(bytes, StandardCharsets.UTF_8);
// use msg as needed...