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);