标签: bits

在C#中设计BitStream

我正在查看名为BitStream的C#库,它允许您向标准C#Stream对象写入和读取任意数量的位.我注意到在我看来一个奇怪的设计决定:

将位添加到空字节时,这些位将添加到字节的MSB中.例如:

var s = new BitStream();
s.Write(true);
Debug.Assert(s.ToByteArray()[0] == 0x80);  // and not 0x01

var s = new BitStream();
s.Write(0x7,0,4);
s.Write(0x3,0,4);
Debug.Assert(s.ToByteArray()[0] == 0x73); // and not 0x37
Run Code Online (Sandbox Code Playgroud)

但是,当引用数字中的位作为输入时,输入数字的第一位是LSB.例如

//s.Write(int input,int bit_offset, int count_bits)
//when referencing the LSB and the next bit we'll write
s.Write(data,0,2); //and not s.Write(data,data_bits_number,data_bits_number-2)
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎不一致.由于在这种情况下,当"逐渐"复制像前一个例子中的字节(前四位,然后是最后四位)时,我们将不会得到原始字节.我们需要"向后"复制它(首先是最后四位,然后是前四位).

这种设计是否有理由让我失踪?具有此行为的位流的任何其他实现?有什么设计考虑因素?

似乎ffmpeg比特流的行为方式与我认为一致.查看它在使用函数中ORsrc指针进行字节移位之前的量.put_bits

作为旁注:

第一字节添加,是字节数组中的第一个字节.例如

var s = new BitStream();
s.Write(0x1,0,4);
s.Write(0x2,0,4);
s.Write(0x3,0,4);
Debug.Assert(s.ToByteArray()[0] …
Run Code Online (Sandbox Code Playgroud)

c# binary byte bits

5
推荐指数
1
解决办法
5134
查看次数

showbits()函数

在阅读一本名为"Let us C"的书时,我读到了一个showbit()可以显示数字位的函数.没有提到任何特殊的头文件.在互联网上搜索它并没有发现任何有用的东西.有这样的功能吗?我想要打印十进制数的二进制数.否则请给我一个替换功能.谢谢

c bits

5
推荐指数
0
解决办法
9302
查看次数

如何将字符串转换为位然后转换为int数组 - java

如何在Java中将字符串转换为位(不是字节)或位数组(我稍后会做一些操作)以及如何转换为整数数组(每32位转换成int然后将它放入数组中?我有从未在Java中进行过这种转换.

String->array of bits->(some operations I'll handle them)->array of ints
Run Code Online (Sandbox Code Playgroud)

java string int bits bit

5
推荐指数
1
解决办法
1万
查看次数

5
推荐指数
2
解决办法
2万
查看次数

bits/c ++ config.h没有这样的文件或目录

我正在尝试使用qt creator在ubuntu 14.04上编译我的代码,包括iostream lib,但是当我执行它时,我收到了以下错误消息:

/usr/include/c++/4.8/iostream:38: error: bits/c++config.h: No such file or directory #include <bits/c++config.h>
Run Code Online (Sandbox Code Playgroud)

即使我尝试通过终端编译它,我也有同样的麻烦.这是我从朋友那里获得的交流代码,而不是c ++,但我仍然需要包含这个iostream.我做了一个巨大的研究,在互联网上找不到任何有用的东西,只是关于64或32位操作系统的帖子.我是编程领域的新手,我很高兴你的耐心,谢谢.

c qt iostream bits include

5
推荐指数
1
解决办法
1万
查看次数

如何有效地将BitSet转换为二进制字符串?

我正在寻找一种有效的方法来如何轻松地将其转换BitSet为二进制字符串.让我们说它的通常长度将是数千位.

例如,让我们:

BitSet bits = new BitSet(8);
bits.set(1);
bits.set(3);
Run Code Online (Sandbox Code Playgroud)

这是理想的结果:

String result = toBinaryString(bits);
// expected: result = "01010000"
Run Code Online (Sandbox Code Playgroud)

我总体上有一些想法(溪流等),但可能有一些明显的标准方法,我只是缺少.

java string binary bits bitset

5
推荐指数
1
解决办法
4330
查看次数

从文件中解压缩位(子字节)数字的最快方法

给定一个具有分辨率压缩二进制数据的文件,我想将子字节位转换为python中的整数表示.我的意思是我需要将n文件中的位解释为整数.

目前我正在将文件读入bitarray对象,并将对象的子集转换为整数.这个过程有效,但相当缓慢和繁琐.有没有更好的方法来做到这一点,也许是struct模块?

import bitarray

bits = bitarray.bitarray()
with open('/dir/to/any/file.dat','r') as f:
    bits.fromfile(f,2) # read 2 bytes into the bitarray

    ## bits 0:4 represent a field
    field1 = int(bits[0:4].to01(), 2)  # Converts to a string of 0s and 1s, then int()s the string

    ## bits 5:7 represent a field
    field2 = int(bits[4:7].to01(), 2)

    ## bits 8:16 represent a field
    field3 = int(bits[7:16].to01(), 2)

print """All bits: {bits}\n\tfield1: {b1}={field1}\n\tfield2: {b2}={field2}\n\tfield3: {b3}={field3}""".format(
        bits=bits, b1=bits[0:4].to01(), field1=field1, 
        b2=bits[4:7].to01(), field2=field2, …
Run Code Online (Sandbox Code Playgroud)

python binary bits file

5
推荐指数
1
解决办法
2137
查看次数

找到最小位数以区分一组二进制数的算法

假设我们有K个二进制数(每个都是相同的长度).我们需要找到所需的最少位数(不需要是连续的)来唯一地识别这些K二进制数.例如100,110可以区分1位(在第二位置).111,110,101需要2比特来区分.

algorithm bits

5
推荐指数
1
解决办法
550
查看次数

XOR编程拼图建议

给定long int x,计算满足以下条件的a的值的数量:

一个 XOR X > X
0 < < X

其中ax是长整数,XOR是按位XOR运算符

你会如何解决这个问题?

我还应该提到输入x可以大到10 ^ 10

我已经设法通过迭代0到x来检查条件并递增计数值来获得强力解决方案..但是这不是最佳解决方案......


这是我试过的蛮力.它可以工作,但对于x的大值非常慢.

 for(int i =0; i < x; i++)
 {
      if((0 < i && i < x) && (i ^ x) > x)
          count++;    
 }
Run Code Online (Sandbox Code Playgroud)

c++ bits xor

5
推荐指数
1
解决办法
262
查看次数

查找char变量中唯一的“ 1”位的索引的最有效方法(在C中)

这是一个采访问题:
给您一个名为的char变量ch,当您知道它代表一个以二进制形式表示的数字时,它的八位中只有一位等于“ 1”。IE,唯一可能的值为ch0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80
给定变量ch,我需要编写最有效的代码来获取该“ 1”位的索引。例如:如果ch == 0x1->结果为0。-- ch == 0x4结果为2。

显而易见的方法是使用开关盒,但我需要更高效的东西。
您可以在此处进行一些有效的操作吗?

c algorithm performance bits bit-manipulation

5
推荐指数
1
解决办法
387
查看次数

标签 统计

bits ×10

binary ×3

c ×3

algorithm ×2

byte ×2

java ×2

string ×2

.net ×1

bit ×1

bit-manipulation ×1

bitset ×1

c# ×1

c++ ×1

file ×1

include ×1

int ×1

iostream ×1

performance ×1

python ×1

qt ×1

xor ×1