免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8746 | 回复: 3
打印 上一主题 下一主题

字节数组的取反 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-17 15:00 |只看该作者 |倒序浏览
我想对字节数组 data[] 中所有字节的所有位进行取反操作,语句该怎么写?
论坛里搜索了一下,也没找到可以参考的信息,请达人指教。

已经解决了,不好意思一直挂在这儿了。

[ 本帖最后由 Mine 于 2009-10-12 09:50 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-09-18 09:26 |只看该作者

回复 #1 Mine 的帖子

目前的代码如下

            byte[] data;

               。。。。此处是给data数组赋值部分,省略

                int bytecount = data.length;                             // 取得字节数组的长度
                byte OxFF = (-128);                                      // 用于给字节取反的字节常量(0xFF)
                byte temp;                                               // 临时变量

                for (int I = 0; I < bytecount; I++){
                        temp = data[ I ];
                        data[ I ] = temp ^ OxFF;                                 // 逐个字节与0xFF异或(整个字节串逐位取反)
                }

编译时给出错误提示为  
  语句  data[ I ] = temp ^ OxFF;
  可能损失精度
  找到: int
  需要: byte

所有参与运算的变量都已经是byte型了,为什么还会提示这样的错误?

[ 本帖最后由 Mine 于 2009-9-18 09:42 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-09-18 09:40 |只看该作者

回复 #2 Mine 的帖子

代码贴上来后好像被(所见即所得)功能和谐掉了,大概是本人不明白发贴方法吧,请海涵。
数组下标部分[I]被吃掉了,(-128)变成了笑脸。。。


重新编辑了一下,基本可以看到原貌了

[ 本帖最后由 Mine 于 2009-9-18 09:43 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2009-10-12 07:47 |只看该作者
位操作符会自动提升 byte, short 位 int再计算,所以需要转换
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP