int类型转4字节byte数组

gsjfkdg 2013-07-19 10:56:21

int num ;

byte[] array = new byte[4];

array[0] = (byte)(num>>24);
array[1] = (byte)(num>>16);
array[2] = (byte)(num>>8);
array[3] = (byte)num;


这样转正确吗? 编译有问题
...全文
451 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
z8323664 2013-07-19
  • 打赏
  • 举报
回复
引用 10 楼 wanghb1989 的回复:
[quote=引用 8 楼 z8323664 的回复:] 难道我理解错了吗
int a=*array1[/quote] 什么意思啊。。 你这个是错的, 只取1个字节啊
wanghb1989 2013-07-19
  • 打赏
  • 举报
回复
引用 8 楼 z8323664 的回复:
难道我理解错了吗
int a=*array1
gfchen1989 2013-07-19
  • 打赏
  • 举报
回复
引用 5 楼 gsjfkdg 的回复:

byte[] array = new byte[4]; 
typedef unsigned char byte; //byte类型也定义了 为什么这一句定义有问题?
byte* array = new byte[4];
z8323664 2013-07-19
  • 打赏
  • 举报
回复
难道我理解错了吗
z8323664 2013-07-19
  • 打赏
  • 举报
回复
要看大小端吧,windows下你这个就是错的,要反过来 顺便问一个,为什么我看到很多代码都喜欢在后面加个 & 0xFF ?,我感觉没必要啊
AndyStevens 2013-07-19
  • 打赏
  • 举报
回复
引用 5 楼 gsjfkdg 的回复:

byte[] array = new byte[4]; 
typedef unsigned char byte; //byte类型也定义了 为什么这一句定义有问题? 没见过byte[] array 这种声明。
byte* array = new byte[4]; 
gsjfkdg 2013-07-19
  • 打赏
  • 举报
回复

byte[] array = new byte[4]; 
typedef unsigned char byte; //byte类型也定义了 为什么这一句定义有问题?
gsjfkdg 2013-07-19
  • 打赏
  • 举报
回复
引用
1
定义过了
大尾巴猫 2013-07-19
  • 打赏
  • 举报
回复
不用这么麻烦的吧。 int占4字节,byte[4]也是,直接memcpy
ri_aje 2013-07-19
  • 打赏
  • 举报
回复
这样就行了。

 union
 {
  int  n;
  char bytes [sizeof(int)];
 } pack;
 pack.n = 100;
然后用 pack.bypes 访问。
图灵狗 2013-07-19
  • 打赏
  • 举报
回复
思路是正确的,不过byte类型需要先定义吧: typedef unsigned char byte;

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧