标签: bits

c ++如何在字符串中添加零位字节或null

我正在做一个TFTP的简单客户端实现.在这里,我需要以下列格式发送读取请求

/* send request 

      2 bytes    string     1 byte     string   1 byte
------------------------------------------------------
RRQ/  | 01/02 |  Filename  |   0  |    Mode    |   0  |
WRQ  -------------------------------------------------

*/
Run Code Online (Sandbox Code Playgroud)

在我之间我必须插入1个字节的零位值.但我无法增加这个价值.此外,如果我添加1个零位字节..这实际上意味着字符串终止字符比如何获得正确的strlen值.

如果有人可以帮我这个...

enter code here


const char opcode_read[2] ={'0','1'};
const char opcode_write[2] ={'0','2'};
const char opcode_data[2] ={'0','3'};
const char opcode_acknowledge[2] ={'0','4'};
const char opcode_error[2] ={'0','5'};  
const char mode_netascii[] = "netascii\0";
char blk_read_request[100];
char file_name[] = "rfc0791.txt\0";

memcpy(blk_read_request, opcode_read, 2);
memcpy(&blk_read_request[2], file_name, strlen(file_name) + 1);
memcpy(&blk_read_request[2 + strlen(file_name)], mode_netascii, strlen(mode_netascii) + 1);

for …
Run Code Online (Sandbox Code Playgroud)

c++ byte bits zero

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

在C中,会不会比b == 0xff更快?~b?

从很久以前,我有一个记忆,我一直坚持认为与零的比较比任何其他值都快(ahem Z80).

在我写的一些C代码中,我想跳过设置了所有位的值.目前这些值的类型char可能会发生变化.我有两种不同的替代方法来执行测试:

if (!~b)
    /* skip */
Run Code Online (Sandbox Code Playgroud)

if (b == 0xff)
    /* skip */
Run Code Online (Sandbox Code Playgroud)

除了后者假设b是一个8位字符而前者没有,前者会因为旧的零优化技巧比较快,还是今天的CPU超出了这种情况呢?

c optimization comparison bits

1
推荐指数
2
解决办法
285
查看次数

代表8位的2个数字

我有2套价值观.每个都在-50到+50的范围内.

有没有办法在一个字节中表示其中两个值?(我在C中工作,使用Vstudio 2010).谢谢.

澄清:值是任意整数; 也就是说,值可以是-50到+50之间的任何整数.(所以,问题已经回答:它是"不".)

c bits bit-shift

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

van Emde Boas Tree中的高位和低位

我试图理解vEB树的概念.

在一个例子中:我假设宇宙集U = {0,1,2,3 ...... 8}.所以大小是9.

现在让我们取一个子集S = {0,1,3,4,6,7}.

对于一个操作FindSuccessor(3,S); 我需要知道子集S中的最小元素> 3,我需要知道元素的高位和低位,即3.

一个解释是它的前半部分和后半部分,分别将结果00和11分别设为高和低.

另一个说:

high = Floor [element/sqrt(| U |)] = Floor [3/sqrt(9)] = Floor [1] = 1;

low = element%sqrt(| U |)= 3%sqrt(9)= 0;

请解释我哪里出错了?

tree bits data-structures van-emde-boas-trees

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

在bash中将数字转换为位域字符串

bash将数字转换为像1101这样的位域字符串可能是最简洁的方法吗?

实际上我试图做相反的事情

echo $[2#1101]
Run Code Online (Sandbox Code Playgroud)

原因:我需要向一个程序发送一个参数,该程序采用像"0011010110"这样的完整字符串形式的位域,但通常只需要启用一个或几个位,如下所示:

SUPPRESSbits=$[1<<16] runscript.sh  # OR
SUPPRESSbits=$[1<<3 + 1<<9] runscript.sh  # much more readable when I know what bits 3 and 9 toggle in the program
Run Code Online (Sandbox Code Playgroud)

然后runscript.sh然后在其env中看到SUPPRESSbits=65536而不是以SUPPRESSbits="1000000000000000"解析错误结束.

math bash shell bits

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

如何将float转换为int保留位值

我有一个float4进入计算着色器,其中3个浮点数实际上是浮点数,但第四个是2个uint一起移位,我如何通过保留位序列而不是数值来将浮点数转换为uint?

在c ++方面,我通过创建一个uint指针解决它,用所需的数字填充它,并将指针作为浮点指针传递.然而在hlsl和c/c ++类似,没有指针,所以我在这里停留:|

c++ bits hlsl

1
推荐指数
2
解决办法
4094
查看次数

如何正确循环并打印Int,Long,Float或BigInteger的位?

我正在尝试调试一些位移操作,我需要在Bit-Shifting操作之前和之后可视化位.

我从这个答案读到,我可能需要处理来自变换的回填,但我不确定这意味着什么.

我想通过提出这个问题(我如何打印int中的位)我可以弄清楚回填是什么,也许我还有其他一些问题.

这是我到目前为止的示例代码.

    static string GetBits(int num)
    {
        StringBuilder sb = new StringBuilder();
        uint bits = (uint)num;
        while (bits!=0)
        {
            bits >>= 1;

            isBitSet =  // somehow do an | operation on the first bit.
                        // I'm unsure if it's possible to handle different data types here
                        // or if unsafe code and a PTR is needed

            if (isBitSet)
                sb.Append("1");
            else
                sb.Append("0");
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# pointers bits bit-shift

1
推荐指数
2
解决办法
4980
查看次数

从给定的位数计算可能的最大值

我有一个函数需要传递任意数量的位,例如7.是否有一种直接的方法来计算该位数可用的最大数量.例如,如果我传入8,该函数将返回255.

有没有直接/有效的方法来做到这一点?

python bits

1
推荐指数
2
解决办法
3687
查看次数

如何检查8位无符号字符中的设置位数?

所以我必须在C中找到unsigned char变量的设置位(在1上)?

类似的问题是如何计算32位整数中的设置位数?但它使用的算法不易适应8位无符号字符(或不明显).

c embedded bits

1
推荐指数
2
解决办法
2317
查看次数

存储指针值需要多少位?

据我所知,32位系统上指针的大小通常为4个字节,而在64位系统上则为8个字节.但据我所知,并非所有位都用于存储地址.如果是这样,将空闲位用于其他目的是否安全?如果是这样,在指针存储空间中32位和64位系统上有多少可用位和可用位数?

c++ memory pointers bits

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