标签: binary

从一个字节中抓取n位

我从一个字节中抓取n位有点麻烦.

我有一个无符号整数.假设我们的十六进制数是0x2A,十进制是42.在二进制文件中,它看起来像这样:0010 1010.我如何获取前10位是00101,接下来的3位是010,并将它们分成单独的整数?

如果有人能帮助我那将是伟大的!我知道如何从一个字节中提取即可

int x = (number >> (8*n)) & 0xff // n being the # byte
Run Code Online (Sandbox Code Playgroud)

我在另一篇关于堆栈溢出的文章中看到过,但我不确定如何从字节中获取单独的位.如果有人能帮助我,那就太好了!谢谢!

c c++ binary hex bits

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

创建具有特定位数的多个数字

问题

我需要创建32位数字(有符号或无符号无关紧要,最高位永远不会被设置),每个数字必须设置给定的位数.

天真的解决方案

最简单的解决方案当然是从零开始.在循环内,数字现在增加1,计数位数,如果计数具有所需值,则数字存储到列表中,否则循环重复.如果找到足够的数字,则停止循环.当然这很好用,但是一旦所需位数变得非常高,它就会非常慢.

更好的解决方案

具有(比方说)5位的最简单的数字是设置前5位的数字.这个号码可以很容易地创建.在循环内,第一个位置位,数字向左移一个.这个循环运行5次,我找到第一个设置了5位的数字.接下来的几个数字也很容易创建.我们现在假装数字为6位宽,最高位数未设置.现在我们开始将第一个零位向右移动,因此我们得到101111,110111,111011,111101,1111110.我们可以通过在前面添加另一个0并重复此过程来重复此操作.0111110,1011110,1101110等.然而,这种方式的数字增长速度将超过必要的速度,因为使用这种简单的方法,我们省略了数字,如1010111.

那么有没有更好的方法来创建所有可能的排列,一种可以使用的通用方法,无论下一个数字将包含多少位,无论我们需要设置多少个位?

algorithm binary combinations permutation

18
推荐指数
2
解决办法
5564
查看次数

.NET Decimal的二进制表示

嘿所有,快速问题:.NET decimal类型如何在内存中以二进制形式表示?

我们都知道浮点数是如何存储的,因此存在不准确的原因,但decimal除了以下内容之外我找不到任何有关的信息:

  1. 显然比浮点数更准确
  2. 占用128位内存
  3. 2 ^ 96 +符号范围
  4. 28(有时29?)总数字的有效数字

有什么方法可以解决这个问题吗?我的计算机科学家要求答案,经过一个小时的尝试研究,我找不到它.似乎有很多浪费的东西,或者我只是在脑海中想象这个错误.有人可以对此有所了解吗?谢谢.

.net binary decimal representation

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

18
推荐指数
3
解决办法
4万
查看次数

将SQL Server varBinary数据转换为字符串C#

我需要帮助找出如何将从设置为varBinary(max)SQL Server表列中的数据转换为字符串,以便在标签中显示它.

这是在C#中我正在使用DataReader.

我可以使用以下方式提取数据:

var BinaryString = reader[1];
Run Code Online (Sandbox Code Playgroud)

我知道这个专栏保存以前转换为二进制的文本.

c# sql-server string binary type-conversion

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

一次读取一个二进制文件1个字节

我试图一次读取C 1字节的二进制文件,并在搜索互联网几个小时后仍然无法检索除垃圾和/或seg故障之外的任何内容.基本上,二进制文件的格式为256项长度,每个项目为1个字节(0到255之间的无符号整数).我试图使用fseek和fread跳转到二进制文件中的"索引"并检索该值.我目前的代码:

unsigned int buffer;

int index = 3; // any index value

size_t indexOffset = 256 * index;
fseek(file, indexOffset, SEEK_SET);
fread(&buffer, 256, 1, file);

printf("%d\n", buffer);
Run Code Online (Sandbox Code Playgroud)

现在这段代码给了我随机的垃圾数字和段错误.有关如何使其正常工作的任何提示?

c io binary file

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

Fiddler将二进制文件数据添加到POST

我尝试将二进制文件数据直接添加到POST调用的请求主体中,以便我可以模拟文件上载.但是,我尝试设置'请求前'断点并使用'插入文件',但我似乎无法让它工作.我还试图修改CustomRules.js来注入文件,但无法弄清楚如何通过JScript加载二进制数据.这里有一个简单的解决方案吗?

binary file-upload fiddler

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

如何在文本文件中查找不可打印的字符

我有一个由第三方处理的文本文件.他们告诉我该文件无效,因为它包含一个不可打印的字符.找到不可打印字符的最佳方法是什么,因为我的普通文本编辑器不会显示它.我更喜欢基于windows,dos或PowerShell的解决方案.

binary file

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

CIDR按位操作 - 我可以更聪明一点吗?

我正在构建一个代表IPv4子网的类.我将网络地址和子网掩码存储为4字节二进制字符串,它们是在构造函数期间根据参数构建的.我希望构造函数接受的表示之一CIDR表示法.

我的按位操作有点生疏,我遇到的问题是将子网掩码的十进制整数CIDR表示转换为4字节的二进制字符串,反之亦然.我还发现我无法对字符串执行左/右移位 - 我确信之前已经成功完成了?


我已设法转换为二进制字符串以使用以下代码:

// An example input value.
$mask = 24; // 255.255.255.0

if ($mask < 0 || $mask > 32) {
  // Invalid prefix size
  throw new RangeException('Invalid CIDR prefix size');
} else if ($mask === 0) {
  // Handle 0
  $mask = "\x00\x00\x00\x00";
} else {
  // Left-pad a 4-byte string with $mask set bits
  $mask = pack('N', (0x01 << 31) >> ($mask - 1));
}
Run Code Online (Sandbox Code Playgroud)

我不喜欢这种逻辑有两个原因:

  • 我不喜欢把它0视为特例
  • 我不喜欢右移然后是左移

我确信有一种方法能够以一种 …

php binary bit-manipulation cidr

18
推荐指数
2
解决办法
1833
查看次数

为什么二进制等效计算不正确?

我编写了以下程序来输出一个整数的二进制等价物(我检查了我的系统上的int是4个字节)它是4个字节.但输出并不合适.代码是:

#include<iostream>
#include<iomanip>
using namespace std;

void printBinary(int k){
    for(int i = 0; i <= 31; i++){
        if(k & ((1 << 31) >> i))
            cout << "1";
        else 
            cout << "0";
    }
}

int main(){
    printBinary(12);
}
Run Code Online (Sandbox Code Playgroud)

我哪里弄错了?

c++ binary

18
推荐指数
2
解决办法
1572
查看次数