【问题标题】:Converting string "s" to binary [closed]将字符串“s”转换为二进制[关闭]
【发布时间】:2017-04-12 04:33:36
【问题描述】:
public class test1 {
String testVar = "s";
String binary;
int decimal;

public test1()
{
    decimal = Integer.parseInt(testVar.trim(), 16 );
    System.out.println(decimal);
}

这是我的代码,似乎这适用于其他字母,但是当它的字符串值为“s”时,会出现错误

线程“main”java.lang.NumberFormatException 中的异常:对于输入字符串:“s”

【问题讨论】:

  • 你期望什么价值?
  • Base 16 表示 hex,只有数字 0-9 和字母 A-F(大写或小写)有效,可选前缀减号 (-)。
  • 为什么你认为它应该适用于“s”?
  • “二进制”的含义也不是很清楚。你看,任何信息都可以用 0 和 1 来表示。任何字符串都可以被编码(阅读encoding),然后变成二进制;例如,参见stackoverflow.com/questions/4173951/…。长话短说:目前还不清楚您实际要求的是什么。但我想:这是你通常会通过学习来学习的东西。不是通过反复试验。

标签: java string netbeans type-conversion


【解决方案1】:

与 Decimal 的有效值相似的是

0-9(你不会看到十进制的 A、B、C 等),

对于十六进制,有效值为

0-9,A-F。

虽然“S”不在列表中。

【讨论】:

  • 感谢它在我的脑海中掠过,十六进制并非全是字母字符
【解决方案2】:
    String inputString = "My String";
    byte[] bytes = inputString.getBytes("UTF-8");
    String binaryString = "";
    for (byte b : bytes) {
        binaryString+=Integer.toBinaryString(b);
    }
    System.out.println(binaryString);

【讨论】:

    【解决方案3】:

    这是使用 Integer.toString(val,radix) 将 int 转换为二进制值的短代码:

    public static void main(String[] args) {
            StringBuilder finalString = new StringBuilder();
            char[] arr= {'a','b','c'};
            for(int i = 0;i<arr.length;i++){
                int tempChar = arr[i];
                finalString.append(Integer.toString(tempChar,2)).append(",");//& this is not allowed then now only you need to create function for integer to binary conversion.
            }
            System.out.println("Your byte String is\n"+finalString);
        }
    

    【讨论】:

      猜你喜欢
      • 2017-05-14
      • 2021-02-24
      • 2022-08-16
      • 2017-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多