【问题标题】:how to convert binary string to hex and send over Uart Port in java如何将二进制字符串转换为十六进制并在java中通过Uart端口发送
【发布时间】:2019-09-30 18:24:05
【问题描述】:

我有一个看起来像 11001111 00011111 11111111 的二进制字符串,我想将其转换为十六进制并通过 Uart 发送到 Arduino。 由于字节数据类型不支持大于 128 的值,如何在不获取带符号值的情况下将每个 8 位转换为十六进制。

我正在这样做

string b = "110011110001111111111111"
byte[] bval = new BigInteger(b, 2).toByteArray();

预期输出:cf1fff

由于所有这些位对应于数据中的某些数据变化,因此接收端的行为也会发生变化。 请告诉我哪里错了。

【问题讨论】:

    标签: java string hex byte


    【解决方案1】:
    String b = "110011110001111111111111";
    
    int decimal=Integer.parseInt(b,2);
    
    String t = Integer.toHexString(decimal);
    
    byte[] bval = t.getBytes();
    

    【讨论】:

    • for this string = 110010001001010000000100000000000000000000000000 我收到数字格式异常如何解决?
    • 如果您的数字非常高/大,请将 int 更改为长整数或大整数
    • 成功了。但我对 hex string = {c89484000000}; 有一个疑问。字节数组输出为 = {99,56,57,52,56,52,48,48,48,48};对于这个二进制字符串=“110010001001010000000100000000000000000000000000”,因此我在接收端得到了错误的值。
    • 将数组和 int 变量更改为 long。它超出了限制。
    • 所以,问题是 getBytes() 给了我字符串 t 中每个字符的 ASCII 值。我不想按原样发送十六进制
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 2014-10-24
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    相关资源
    最近更新 更多