Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将4字节转换为无符号整数_C_Byte_Bit - Fatal编程技术网

C 将4字节转换为无符号整数

C 将4字节转换为无符号整数,c,byte,bit,C,Byte,Bit,如果有一个字符数组,如 char bytes[256] = "10000011011110110010001101000011"; 我想将其无符号值改为:2205885251 我正试图按照这些思路做些事情 unsigned int arr[256]; for(int i = 0, k=0; i<256; i++, k++) { arr[k] = bytes[i]|bytes[i+1]<<8|bytes[i+2]<<16|bytes[i+3]<<24;

如果有一个字符数组,如

char bytes[256]  = "10000011011110110010001101000011";
我想将其无符号值改为:
2205885251

我正试图按照这些思路做些事情

unsigned int arr[256];
for(int i = 0, k=0; i<256; i++, k++)
{
arr[k] = bytes[i]|bytes[i+1]<<8|bytes[i+2]<<16|bytes[i+3]<<24;
}
无符号整数arr[256];
对于(int i=0,k=0;i
#包括
字符字节[256]=“100001011110110010001101000011”;
内部主(空)
{
无符号整数输出;
int i;
for(out=0,i=0;i<32;++i)
if(字节[31-i]=='1')
out |=(1u
#包括
int main()
{
字符字节[256]=“100001011110110010001101000011”;
无符号整数值=0;
对于(int i=0;i<32;i++)
{
值=值*2+(字节[i]-“0”);
}
printf(“%u\n”,值);
}
输出:2205885251

#include <stdio.h>

int main()
{
    char bytes[256]  = "10000011011110110010001101000011";
    unsigned int value = 0;
    for(int i = 0; i< 32; i++)
    {
        value = value *2  + (bytes[i]-'0');
    }
    printf("%u\n",value);
}
char bytes[]  = "10000011011110110010001101000011";
unsigned int k;

k = strtoul(bytes, NULL, 2);
printf("%u \n", k);

valter

调用数组
字节
会让人困惑,因为它们显然是位…加上你的代码会按字节大小的距离移动这些位,这显然不是你将它们转换为实际位的方式…我将其命名为字节,因为它是4个字节,代表4个整数值。我不想将它们转换为我想转换的位o一个无符号整数。四个整数是128位而不是256!@Matt:1个整数有4或8个字节。4个整数没有4个字节。你确实有位,而不是字节。为什么你的整数数组256太大?@deviantfan 1000011=131。这是8位或1个字节。这是一个4个字节的字符数组。我想从这个字符数组中得到一个32位无符号整数值。我制作了256个阵列,因为此时我不关心分配。你不了解哪部分?你知道
=“code>做什么吗?你知道
我现在明白了什么吗?我以前从未见过1u。
char bytes[]  = "10000011011110110010001101000011";
unsigned int k;

k = strtoul(bytes, NULL, 2);
printf("%u \n", k);