2011-04-08 50 views
2

我在手动读:指定开始与 第一个字节的MSB位流读出顺序

对于位输送,将比特 为了使字节流格式是 ,继续进行到LSB的 第一个字节,然后是第二 字节的最高位,等

在我的申请,我不得不应付位。 (例如我有十进制数5,以二进制格式,它看起来像00000101) 所以,是指(按照手册)位予读的顺序是

<= 0 <= 0 <= 0 <= 0 <= 0 <= 1 <= 0 <= 1 (first read bit I read is 0, second is 0 etc....) 

,或者它意味着读取该命令位:

<= 1 <= 0 <= 1 <= 0 <= 0 <= 0 <= 0 <= 0 (first read bit I read is 1, second is 0 etc....) 

感谢

回答

2
  • MSB:最显著位
  • LSB:最低显著位

所以对于5(0000_0101)左(占2 )该位是 “最显著” 和(代表2 )是“最不重要的”。因此,是的,期望0是第一位。

1

在Java中,字节读取和写入数据流的默认方法会自动默认为网络字节顺序,因此你可能好去。

+0

谢谢,但我与字节流的水平低解析工作,所以我了解字节位的顺序。 – stemm 2011-04-08 12:35:54

+0

我不认为你会这样做。只需使用返回单个字节的调用即可。 – dty 2011-04-08 15:44:35

1

如果您的数据流中的前几个字节是0x7D,0x01,那么位流开始0,1,1,1,1,1,0,1,0,0,0,0,0,0,0,1

+0

谢谢,理解:) – stemm 2011-04-08 12:37:51

+0

@stem:我没明白0x7D,0X01。请你解释一下。 – 2011-04-08 12:56:42

+0

@Suresh:如果流中的第一个字节具有十六进制值“7D”(=十进制125),而第二个具有十六进制值“01”(=十进制值1),则位流开始为'0,1,1 ,1,1,1,0,1,0,0,0,0,0,0,0,1'。这是否更清楚? – 2011-04-08 13:02:13

1

字节顺序大多被称为字节顺序。你有大端系统和小端系统。

Big endian您首先得到最高有效位,最小有效位是第一位。

大部分网络流量都是大端。 X86机器总是小端。

Here大约是字节序的详细信息

+0

这有点误导。仅仅因为X86机器是小端的,任何符合RFC的网络流量仍然是“网络字节顺序” - 即大端。 – dty 2011-04-08 15:49:00