为了账号安全,请及时绑定邮箱和手机立即绑定

在整数的开头和结尾加上零-二进制输出

在整数的开头和结尾加上零-二进制输出

倚天杖 2021-04-07 17:18:21
昨天我发布了一个有关该程序的问题,但实际上,我已经编程了一种编码器,该编码器接受一个字符串和一个整数,然后将整数值添加到字符串中的每个字符,然后最终输出字符串的二进制,假定每个符号或字符为8位。例如,带有整数(代码)4的ABC应该输出01000101 01000110 01000111(EFG)。现在,我已经非常接近完成该项目,但是在将每个字符转换为二进制时遇到了一个问题,我认为这是由于我实际上是如何计算二进制的。示例:如果一个二进制整数以0开头,那么显然我将需要在最左侧用0填充该整数。一世' ve设法做到了,但是在某些情况下整数以0结尾并且我需要做同样的事情,除了最右边的...我不确定我是否100%有意义,但是我已经发布了我的代码并在下面给出预期结果的测试结果。如您所见,它转换得几乎完美,只是中间(B)的值添加了额外的2个零而不是最左边的零,而且我还没有弄清楚如何检查添加的结尾零。有人可以帮帮我吗?我应该如何处理字符转换为二进制(8位)的问题?t弄清楚了如何检查是否添加了结尾的零。有人可以帮帮我吗?我应该如何处理字符转换为二进制(8位)的问题?t弄清楚了如何检查是否添加了结尾的零。有人可以帮帮我吗?我应该如何处理字符转换为二进制(8位)的问题?我还需要弄清楚如何将二进制解码为原始消息。示例:InputMessage:01000101 01000110 01000111,InputCode:4 OriginalMessage:ABC
查看完整描述

2 回答

?
森栏

TA贡献1810条经验 获得超5个赞

正如您所说,您快完成了。但是二进制编码没有按预期工作。这是我的建议:


  public static void getBinaryMsg(String codedMessage) {

    String binary = toBinary(codedMessage);

    System.out.println(binary);

  }


  private static String toBinary(String codedMessage) {

    String binary = codedMessage.chars().boxed().map(c -> pad(Integer.toBinaryString(c), 8, '0') + " ").collect(Collectors.joining());

    return binary;

  }


  private static String pad(String s, int n, char c) {

    return String.format("%"+n+"s", Integer.parseInt(s)).replace(' ', c);

  }

使用Integer.toBinaryString(int i)您不必重新发明轮子。您唯一需要添加的就是填充,以将每个二进制格式格式化为八位。


查看完整回答
反对 回复 2021-04-21
  • 2 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信