byte[] 左移和右移
public static class ex
{
public static byte[] RightShift(this byte[] ba, int n)
{
if (n < )
{
return ba.LeftShift(Math.Abs(n));
}
byte[] ba2 = null;
ba2 = ba.Clone() as byte[];
int loop = (int)Math.Ceiling(n / 8.0);
byte tempByte = ;
byte tempByte2 = ;
byte Header = ; for (int i = ; i < loop; i++)
{
var tempN = i + == loop ? n % : ;
if (tempN == && n != )
{
tempN = ;
}
for (int j = ; j < ba.Length; j++)
{
if (j == )
{
Header = (byte)((ba2.First() & ((byte)(Math.Pow(, tempN) - ))) << ( - tempN));
tempByte = (byte)((ba2[ba.Length - - j] & ((byte)(Math.Pow(, tempN) - ))) << ( - tempN));
ba2[ba.Length - - j] >>= tempN;
}
else
{
tempByte2 = (byte)((ba2[ba.Length - - j] & ((byte)(Math.Pow(, tempN) - ))) << ( - tempN));
ba2[ba.Length - - j] >>= tempN;
ba2[ba.Length - - j] |= tempByte;
tempByte = tempByte2;
if (j + == ba.Length)
{
ba2[j] |= Header;
}
}
}
}
return ba2;
}
public static byte[] LeftShift(this byte[] ba, int n)
{
if (n < )
{
return ba.RightShift(Math.Abs(n));
}
byte[] ba2 = null;
ba2 = ba.Clone() as byte[];
int loop = (int)Math.Ceiling(n / 8.0);
byte tempByte = ;
byte tempByte2 = ;
byte Header = ; for (int i = ; i < loop; i++)
{
var tempN = i + == loop ? n % : ;
if (tempN == && n != )
{
tempN = ;
}
for (int j = ; j < ba.Length; j++)
{
if (j == )
{
Header = (byte)(ba2.Last() & ((byte)(Math.Pow(, tempN) - ) << ( - tempN)));
tempByte = (byte)(ba2[j] & ((byte)(Math.Pow(, tempN) - ) << ( - tempN)));
ba2[j] <<= tempN;
}
else
{
tempByte2 = (byte)(ba2[j] & ((byte)(Math.Pow(, tempN) - ) << ( - tempN)));
ba2[j] <<= tempN;
ba2[j] |= (byte)(tempByte >> ( - tempN));
tempByte = tempByte2;
if (j + == ba.Length)
{
ba2[] |= (byte)(Header >> ( - tempN));
}
}
}
}
return ba2;
}
public static byte[] BitAnd(this byte[] ba1, byte[] ba2)
{
if (ba1.Length != ba2.Length)
{
return new byte[];
}
var ba3 = new byte[ba1.Length];
for (int i = ; i < ba3.Length; i++)
{
ba3[i] = (byte)((byte)ba1[i] & (byte)ba2[i]);
}
return ba3; }
public static byte[] BitOR(this byte[] ba1, byte[] ba2)
{
if (ba1.Length != ba2.Length)
{
return new byte[];
}
var ba3 = new byte[ba1.Length];
for (int i = ; i < ba3.Length; i++)
{
ba3[i] = (byte)((byte)ba1[i] | (byte)ba2[i]);
}
return ba3; }
}
byte[] 左移和右移的更多相关文章
- 【转】C语言位运算符:与、或、异或、取反、左移与右移详细介绍
转载自:http://www.jb51.net/article/40559.htm,感谢原作者. 以下是对C语言中的位运算符:与.或.异或.取反.左移与右移进行了详细的分析介绍,需要的朋友可以过来参考 ...
- C语言位运算符:与、或、异或、取反,左移和右移
C语言位运算符:与.或.异或.取反.左移和右移 个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型. ,则该位的结果值为1,否则为0 | ...
- C语言位运算符:与、或、异或、取反、左移和右移
语言位运算符:与.或.异或.取反.左移和右移 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符 ...
- 分析轮子(二)- << ,>>,>> (左移、右移、无符号右移)
前言:写 分析轮子(一)-ArrayList.java 的时候看到源码中有 int newCapacity = oldCapacity + (oldCapacity >> 1); 这样的代 ...
- [java基础] java 左移和右移
今天搜到一个比较好用的在线编译器,希望和大家分享. 除了java还有c++....,地址是http://www.tutorialspoint.com/compile_java_online.php 另 ...
- C++中的左移、右移运算
移位运算包含“逻辑移位”(logical shift)和“算术移位”(arithmetic shift). 逻辑移位:移出去的位丢弃,空缺位(vacant bit)用 0 填充. 算术移位:移出去的位 ...
- C# ListBox 左移、右移、上移、下移
C# ListBox 左移.右移.上移.下移 2012-11-17 22:53:45| 分类: 技术研讨 | 标签:listbox |字号 订阅 /// <summary> ...
- WPF 小矢量图 : 主页,返回,加,减,文字按钮,左移,右移
原文:WPF 小矢量图 : 主页,返回,加,减,文字按钮,左移,右移 代码:: <UserControl x:Class="SQ.TestPage" xmlns=" ...
- C语言之左移和右移运算符
C语言中的左移和右移运算符移位后的结果老是忘记,最近在刷有关位操作的题目,正好整理下: 1. 左移运算符(<<) 左移运算符是用来将一个数的各二进制位左移若干位,移动的位数由右操作数指 ...
随机推荐
- 微信小程序从零开始开发步骤(四)
上一章节,实现了小程序的底部导航的功能,这一节开始实现一些简单的功能.本章节介绍的是小程序的自定义分享的功能. 可以分享小程序的任何一个页面给好友或群聊.注意是分享给好友或群聊,并没有分享到朋友圈.一 ...
- RAC sysdate
rac的sysdate可能不一致,这个需要注意.
- 如何使用Name对象,包括WorkspaceNames和DatasetNames
转自chanyinhelv原文 如何使用Name对象,包括WorkspaceNames和DatasetNames 第一原文链接 该博主还有很多有关arcgis二次开发的不错的文章. 如何使用Name对 ...
- C++开发人脸性别识别教程(5)——通过FaceRecognizer类实现性别识别
在之前的博客中已经攻克了人脸检測的问题,我们计划在这篇博客中介绍人脸识别.性别识别方面的相关实现方法. 事实上性别识别和人脸识别本质上是相似的,由于这里仅仅是一个简单的MFC开发,主要工作并不在算法研 ...
- 编辑框等控件边框美化(继承CEdit,然后覆盖OnMouseLeave, OnSetFocus, OnPaint函数即可。原来的CEdit虽然代码不可见,但它也是有句柄的,照样随便画)
源码说明:美化能获取焦点控件的边框颜色,获取焦点后颜色不同(类似彗星小助手.QQ等软件),支持自定义颜色,支持单独设置各个控件颜色.实现方法:子类化,在WM_NCPAINT.WM_PAINT等消息自己 ...
- 百度UEditor上传图片-再再总结一次
本周,CSDN有个网友遇到了百度UEditor上传问题,最后商定付50元钱,我帮他解决这个问题. 他最初想自己搞定这个问题,结果搞了好多次,好几天,还是没能解决. 2015年1月17日8: ...
- 关于java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.makeAccessible
<span style="font-size:18px;"> java.lang.NoSuchMethodError: org.springframework.util ...
- 基于RDP瘦客户机协议的简要说明
**************************************************************************************************** ...
- Springmvc案例1----基于spring2.5的採用xml配置
首先是项目和所须要的包截图: 改动xml文件: <?xml version="1.0" encoding="UTF-8"?> <web-app ...
- Android之高仿手机QQ聊天
源代码下载 转载请注明出处,谢谢! 最终版已上传.优化下拉刷新.增加来消息声音提示.主界面改成ViewPager,实现左右滑动.新增群组.最近会话显示条数,开始上班了,不再修改了.谢谢! 国庆这几天, ...