【发布时间】:2017-09-26 21:06:39
【问题描述】:
我正在尝试从 WebExtentions 应用程序中读取标准输入。文档说:
每条消息都使用 JSON 进行序列化,采用 UTF-8 编码,前面有一个 32 位值,其中包含按本机字节顺序排列的消息长度。
https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Native_messaging
他们有一个 Python 示例来读取发送的消息:
rawLength = sys.stdin.read(4)
if len(rawLength) == 0:
sys.exit(0)
messageLength = struct.unpack('@I', rawLength)[0]
message = sys.stdin.read(messageLength)
return json.loads(message)
所以它从消息中删除 32 位数字,然后获取消息。我怎样才能在 Java 中做同样的事情?
编辑有人要求我尝试翻译。请注意,我知之甚少。
System.in.skip(4); // 4 bytes is 32 bits
Scanner sc = new Scanner(System.in);
String message = sc.next();
并且它不会从消息中删除 4 个四个字节。我唯一的其他解决方案是找到消息中的最后一个 { 符号(因为它是一个只有一个 key : value 对的 JSON 对象),然后获取子字符串。
【问题讨论】:
-
几乎相同的方式,但使用Java的io api?你具体要问什么?
-
@bhspencer 这不是骗人的,那个问题是关于读取整数的 ascii 表示,这个不是。
-
我猜想写一些java代码?但不确定。
-
提示:这不是免费的代码翻译服务。向我们展示您自己尝试解决的问题。