【问题标题】:Regarding Bit stuffing for Java关于 Java 的位填充
【发布时间】:2014-12-21 01:20:19
【问题描述】:

我正在为有关使用位填充的数据传输的分配进行编程,其中当传输 5 个相同的位(即在 5 个“0”之后,将添加一个“1”)时,将在数据流中添加一个反转位; 5 个“1”,将添加一个“0”)。 我知道如何从原始文本文档中获取一些信息,以及如何将其写入新的文本文档。但是,由于某种原因,我关于添加反转位的编程部分出错了,这似乎是一个无限循环......

这是我的代码

static void addBitStuffing(Reader r, Writer w) { //Reader is an object class read the data from an original text document, Writer write the read data to a new text document
    int length = 0;
    for(; r.hasMoreData(); length++){           
    }
    boolean [] feld = new boolean [length];
    int i = 0;
    while(r.hasMoreData()){  //hasMoreData check if there is more data in a data stream after the pointer, i.e. if there is none, it would have a value of "false"
        boolean bit = r.getNextBit();
        w.writeNextBit(bit);
        feld[i] = bit;
        i++;

        if (i >= 4){
            if ((feld [i] == true) && (feld[i-1] == true) && (feld [i-2] == true) && (feld [i-3] == true) && (feld [i-4] == true)){
                w.writeNextBit(false);
            }else{
                if((feld [i] == false) && (feld[i-1] == false) && (feld [i-2] == false) && (feld [i-3] == false) && (feld [i-4] == false)){
                    w.writeNextBit(true);
                }
            }       
        }
    }
}

【问题讨论】:

  • 如果你得到与上次相同的位,只增加i会不会更容易,否则重置它?
  • 我已经解决了,谢谢!

标签: java loops bitstuffing


【解决方案1】:

这些陈述

for(; r.hasMoreData(); length++){           
}

导致无限循环。您对循环内的 Reader 不执行任何操作,因此条件不会改变。

【讨论】:

  • 谢谢!我也会改变它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-10
  • 2021-05-27
  • 2020-02-14
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多