我想将4个字符(4个字节)存储到一个unsigned int中。如何使用按位操作将4个字符存储到unsigned int中?
5
A
回答
5
,需要在每个字符的位上移,则或将它们组合成的INT:
unsigned int final = 0;
final |= (data[0] << 24);
final |= (data[1] << 16);
final |= (data[2] << 8);
final |= (data[3] );
使用字符数组,但它同样的道理,无论数据是如何在未来(我觉得我得到了转变右)
0
你可以做这样的(未逐位,但也许更容易):
unsigned int a;
char *c;
c = (char *)&a;
c[0] = 'w';
c[1] = 'o';
c[2] = 'r';
c[3] = 'd';
或者,如果你想按位,你可以使用:
unsigned int a;
a &= ~(0xff << 24); // blank it
a |= ('w' << 24); // set it
// repeat with 16, 8, 0
如果您不先将其空白,您可能会得到另一个结果。
+1
难道你不需要一个强制转换,它应该是c =(char *)&a吗? – 2011-04-24 18:04:41
+0
这将是可选的。我会添加它。谢谢 – Iustin 2011-04-24 18:07:26
3
另一种方式来做到这一点:
#include <stdio.h>
union int_chars {
int a;
char b[4];
};
int main (int argc, char const* argv[])
{
union int_chars c;
c.a = 10;
c.b[0] = 1;
c.b[1] = 2;
c.b[2] = 3;
c.b[3] = 4;
return 0;
}
0
更简单,它能够更好:
/*
** Made by CHEVALLIER Bastien
** Prep'ETNA Promo 2019
*/
#include <stdio.h>
int main()
{
int i;
int x;
char e = 'E';
char t = 'T';
char n = 'N';
char a = 'A';
((char *)&x)[0] = e;
((char *)&x)[1] = t;
((char *)&x)[2] = n;
((char *)&x)[3] = a;
for (i = 0; i < 4; i++)
printf("%c\n", ((char *)&x)[i]);
return 0;
}
相关问题
- 1. C++如何将数据存储为32位unsigned int
- 2. 在C++中使用按位运算符将4个字符更改为int
- 3. 将签名的long int(32bit)存储为4个八位字节?
- 4. 如何在按钮操作中用int替换字符串?
- 5. 将二进制值存储到unsigned int数组中
- 6. 在Java中使用Unsigned int 32位?
- 7. 调用'(std :: pair <unsigned int,unsigned int>)(unsigned int&,unsigned int)'
- 8. 将一个字节的字符串转换为一个unsigned int
- 9. 32位unsigned int php
- 10. Sql Server 2008的4字节Unsigned Int?
- 11. 如何更改unsigned char中的4位?
- 12. 用bitmanipulation在unsigned int中存储一个值
- 13. 将unsigned int +字符串转换为unsigned char向量
- 14. 将文件名的前4个字符存储到变量中
- 15. C/C++:如何正确地将“unsigned int *”值转换为“unsigned int”?
- 16. 在java中使用int的位操作
- 17. 如何字符* INT存储在iPhone
- 18. 如何让运算符[]返回对unsigned int中各个位的引用?
- 19. 如何加载16个8位数据并将它们连接到4个unsigned int?
- 20. 找到最后一个int(1-9)存储在多个位中(每个int都由4位表示)
- 21. 我如何将一个数字/字符串存储到R.string.xx中?
- 22. 操作Python int /字符串
- 23. 这个按位操作如何工作?
- 24. C#按位操作短裤 - 为什么投射到一个int?
- 25. ruby字符串按位操作
- 26. 存储字符和Int
- 27. 使用for循环将字符存储到字符串中?
- 28. C++将存储为char *的4个字符转换为int,反之亦然
- 29. 没有unsigned int数据类型存储unsigned int的方式的优缺点
- 30. 如何在VS2008中指定一个64位的unsigned int const 0x8000000000000000?
我不会建议使用示例代码的'char'关键字C. – 2011-04-24 17:58:00
哦,是的,那很糟糕。固定。 :) – ssube 2011-04-24 17:58:58
如果'data'是一个'signed char'数组,'| ='和'<<'不会按照你的想法工作。 – 2011-04-24 18:01:00