我想将当前时间设置为信标的主要和次要值。让我们假设这是当前时间1465398279009
。我希望9827
是主要价值和9009
未成年人的价值。我使用java代码来调用shell脚本。这是我的java代码从毫米转换为十六进制字符串
Long millis = System.currentTimeMillis();
String time=Long.toString(millis);
// String major1=time.substring(...);
String major1="99";
String major2="99";
String minor1="99";
String minor2="99";
ProcessBuilder pb2=new ProcessBuilder("/test.sh");
pb2.environment().put("major1", major1);
pb2.environment().put("major2", major2);
pb2.environment().put("minor1", minor1);
pb2.environment().put("minor2", minor2);
Process script_exec = pb2.start();
,这是test.sh
sudo hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 e2 c5 6d sd fh fb 33 j2 k9 j9 23 h2 n9 g7 v7 $param1 $major1 $major2 $minor1 $minor2 c5 00
在这个例子中我只是试图把两个值9999
和9999
的内容,但我得到39321
的结果,我认为这些值被转换成大端。我感到困惑,我不太了解哪种类型,以及如何转换字符串。
我知道这不是问题的关键,但请注意,test.sh文件具有非法字节值,如“j2”“j9”“n9”“g7”v7“。十六进制值只能包含字符0-9和af。字符j,n,g和v不合法,会导致问题 – davidgyoung
谢谢你的评论! – Celiiine