标签: bits

如何将位写入文件?

如何用c#,. net将文件(而不是字节)写入文件?我很乐意坚持下去.
编辑:我正在寻找一种不同的方式,只需将每8位写入一个字节

.net c# io bits

4
推荐指数
2
解决办法
5636
查看次数

C#为什么127 =这个位串?

给定此代码以整数输出所有位:

private string getBitLiteral(bool bitVal)
{
    if (bitVal)
    {
        return ("1");
    }
    else
    {
        return ("0");
    }
}
Run Code Online (Sandbox Code Playgroud)

 

    Int64 intThisHand = 127;

    for (int i = 64; i > 0; i--)
    {
        HttpContext.Current.Response.Write(
            getBitLiteral((intThisHand & (1 << i)) != 0)
        );
    }
Run Code Online (Sandbox Code Playgroud)

为什么打印出来:

1000000000000000000000000011111110000000000000000000000000111111
Run Code Online (Sandbox Code Playgroud)

首先我是正确的,因为我希望最后7位是1

其次,为什么中间有一些1?我希望它们都是0,除了尾随的7 1.

c# 64-bit bits bit-manipulation

4
推荐指数
2
解决办法
470
查看次数

在不到n次的时间内在一个位串中找到两个连续的1?

我试图找出一种方法来查看一个位串在比特串大小n中是否有少于n次的2个连续的.

例如,假设我们的字符串大小为5(索引0-4).如果索引1和3都是0,我可以返回false.但如果它们都是那些,那么我可能需要做5次才能找到答案.

bitstring不必是长度5.为简单起见,假设它可以在3到8之间.

algorithm bits bitstring

4
推荐指数
1
解决办法
1652
查看次数

在Haskell中将字节转换为Int64s/Floats/Doubles

我正在尝试在Haskell中解析二进制文件格式(Apple的二进制属性列表格式),并且该格式所需的一件事是将字节序列视为(a)无符号的1-,2-或4-字节整数; (b)签署8字节整数; (c)32位float; (d)64位double.将字节序列转换为无符号整数很容易,甚至处理有符号整数也不会很糟糕.但是对于有符号的整数,特别Floats和Doubles,我真的不想自己实现逻辑.我已经能够找到的功能int2Float# :: Int# -> Float#,并int2Double# :: Int# -> Double#GHC.Prim,但这些似乎并不理想(我不特别想与拆箱类型来工作).我希望有一些方法可以从a [Word8]Word32s/Word64s中进行投射.是否有类型的任何功能Word32 -> Float,Word64 -> Double,Word64 -> Int64,或类似的?

haskell bits

4
推荐指数
1
解决办法
2356
查看次数

如何在unsigned char中更改4位?

unsigned char *adata = (unsigned char*)malloc(500*sizeof(unsigned char));
unsigned char *single_char = adata+100;
Run Code Online (Sandbox Code Playgroud)

如何更改single_char中的前四位以表示介于1..10(int)之间的值?

问题来自TCP头结构:

Data Offset: 4 bits 

The number of 32 bit words in the TCP Header.  This indicates where
the data begins.  The TCP header (even one including options) is an
integral number of 32 bits long.
Run Code Online (Sandbox Code Playgroud)

通常它的值为4..5,char值类似于0xA0.

c unsigned bits tcp bit-shift

4
推荐指数
2
解决办法
5852
查看次数

将32位整数移位32位

我正在抛出一些C代码,我需要将32位int 32位移位.当我使用参数n = 0运行此代码时,不会发生移位.

int x = 0xFFFFFFFF;
int y = x << (32 - n);
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?

c bits bit-shift low-level

4
推荐指数
1
解决办法
2451
查看次数

256如何存储在char变量和unsigned char中

多达255个,我能理解整数如何被存储在charunsigned char;

#include<stdio.h>
int main()
{
        unsigned char a = 256;
        printf("%d\n",a);
        return(0);
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,对于unsigned charchar,我的输出为0.

对于256我认为这是整数存储在代码中的方式(这只是猜测):

第一个256转换为二进制表示,即100000000(总共9位).

然后他们删除删除最左边的位(设置的位),因为char数据类型只有8位内存.

因此它在内存中存储为00000000,这就是为什么它的打印0作为输出.

猜测是否正确或有任何其他解释?

c c++ memory bits char

4
推荐指数
1
解决办法
8509
查看次数

CS_HREDRAW | CS_VREDRAW 它有什么作用?

structure.style = CS_HREDRAW | CS_VREDRAW;
Run Code Online (Sandbox Code Playgroud)

这是我发现的用于注册窗口类并设置调整大小设置的代码行,但它是如何工作的,结构的值style是什么?

中间的管道符号|是按位的,OR所以它会设置style为位的组合,CS_HREDRAW | CS_VREDRAW所以这对 Windows 意味着什么,它如何知道两者是否都设置了,一个是还是没有?

可能是我多虑了...

c c++ windows bits class

4
推荐指数
1
解决办法
5537
查看次数

C++如何获取变量的位长?

假设有一个变量int x.它的大小是4个字节,即32位.

然后我为这个var赋值,x = 4567(二进制10001 11010111); 所以现在,在内存中它应该是这样的:

00000000 00000000 000 10001 11010111

有没有办法得到重要的位长度.在我的例子中,比特长度将是13(我用粗体标记它们).如果我使用sizeof(x)它返回4个字节,其大小为int.如何只获得代表数字的位大小(之后没有不必要的零)?

c++ bits

4
推荐指数
2
解决办法
5601
查看次数

byte [] to bool []用作标志,反之亦然

好吧,所以我有一个字节[],我得到使用 File.ReadAllBytes(filename); 我的问题是我的程序需要将文件中的数据视为一个bool数组.我搜索过,但我没有找到一种方法来获得正确有效的转换.一个例子是:

{ 00101011, 10111010 } ->
            { false, false, true, false, true, false, false, true, true,
              false, true, true, true, false, true, false }
Run Code Online (Sandbox Code Playgroud)

我还需要改变程序.

我遇到的大多数解决方案涉及从每个字节中获取一个布尔值.即,得到的数组与数组的bool[]长度相同byte[],我似乎不明白这是怎么可能的,8位如何只产生一个布尔值?在我的情况下,我需要一个结果数组:bool[bytes.Length * 8].

非常感谢,任何帮助都非常感谢.

实现其中一个解决方案我试图让它工作但它有点错误,因为生成的文件,我读取的文件的副本被损坏:

public static bool[] boolsFromFile(string filename)
    {
        List<bool> b = new List<bool>();
        using (FileStream fileStream = new FileStream(filename, FileMode.Open))
        using (BinaryReader read = new BinaryReader(fileStream))
        {
            while (fileStream.Position != fileStream.Length)
                b.Add(read.ReadBoolean());
        }
        return b.ToArray();
    }

    public static void boolsToFile(string filename, bool[] bools)
    {
        using …
Run Code Online (Sandbox Code Playgroud)

c# bits boolean bytearray bitarray

4
推荐指数
1
解决办法
899
查看次数