【问题标题】:convert string to byte and then insert into the byte array将字符串转换为字节,然后插入字节数组
【发布时间】:2011-11-16 04:00:20
【问题描述】:

我有一个十六进制字符串,st="9e"。我需要将其转换为字节并将其插入字节数组中。但我无法从字符串转换为字节。我使用过类似的技术 1) 字节.valueOf(str); 2)新字节(str); 3)尝试将“0X”附加到str,然后转换为字节。 所有这些都给出了错误。

你能告诉我如何从字符串转换为字节吗?

【问题讨论】:

  • Convert string to byte[]的可能重复
  • 投反对票,因为简单的谷歌搜索会产生正确的答案
  • 所有仍然让您感到困惑的人都给了您直截了当的答案。
  • 我认为 OP 不是在寻找字节数组。她正在寻找一个字节
  • 看到有多少人不明白你的问题,或许你应该考虑把它说得更清楚些。并停止投票。人们正在准确地回答你的问题,你没有正确表达自己不是他们的错

标签: java string casting bytearray byte


【解决方案1】:

您是否尝试过使用String.getBytes()?它接收一个字符串并将其输出为byte[]。希望对您有所帮助。

【讨论】:

    【解决方案2】:

    类似

                String x = "2A"; 
        int intValue = Integer.parseInt(x, 16);
        byte b = (byte) intValue;
    

    9e 对于字节来说太大了,因为它相当于一个字节可以容纳的大于 128 的值。

    无符号字节可以容纳 0-255,但 java 只有有符号字节可以容纳 -128 到 127,因此您必须自己适当地映射范围

    【讨论】:

    • intbyte 的转换可能会截断一个更大的值,该值不适合单个字节。包括一个断言首先测试整数值并使用掩码仅捕获最低位字节将是一个更明智的选择。
    【解决方案3】:

    您可能正在寻找这样的东西:

    import java.util.*;
    import java.lang.*;
    
    class Main
    {
            public static void main (String[] args)
            {
                    String hex = "9e";
                    int i = Integer.parseInt(hex, 16);
                    System.out.println(Arrays.toString(intToBytes(i)));
            }
    
            private static byte[] intToBytes(int n) 
            {
                    byte[] bytes = new byte[4];
                    for(int i = 0; i < 4; i++)
                    {
                            bytes[i] = (byte) (n | 0);
                            n >>= 8;
                    }
                    return bytes;
            }
    }
    

    由于字节是有符号整数类型,您需要将它们转换为无符号值。

    【讨论】:

    • 谢谢你.. 但它给出了 -98 作为答案。我需要将 9e 准确地放入数组中。
    • 这正是我说转换为无符号字节的原因。
    【解决方案4】:
    【解决方案5】:

    你试过下面的代码吗?

    String st = "9e";
    byte [] value = st.getBytes();
    

    【讨论】:

      猜你喜欢
      • 2019-10-10
      • 2017-04-14
      • 2021-11-21
      • 2021-11-11
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多