日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

[C#]我自己写的一个对字节中每位进行修改值的函数

發布時間:2024/4/11 C# 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [C#]我自己写的一个对字节中每位进行修改值的函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

位操作方法

代碼如下:

1. 設置字節中某位的值

static public Byte s_SetBit(Byte byTargetByte, int nTargetPos, int nValue) {int nValueOfTargetPos = -1;if (nValue != 0 && nValue != 1){return 0;}if (!(nTargetPos >= 0 && nTargetPos < 8)){return 0;}switch (nTargetPos){case 0:nValueOfTargetPos = (byTargetByte >> 7) & 0x01;if (nValue == 1){byTargetByte = Convert.ToByte(byTargetByte | 0x80);}else if (nValue == 0){byTargetByte = Convert.ToByte(byTargetByte & 0x7f);}break;case 1:nValueOfTargetPos = (byTargetByte >> 6) & 0x01;if (nValue == 1){byTargetByte = Convert.ToByte(byTargetByte | 0x40);}else if (nValue == 0){byTargetByte = Convert.ToByte(byTargetByte & 0xbf);}break;case 2:nValueOfTargetPos = (byTargetByte >> 5) & 0x01;if (nValue == 1){byTargetByte = Convert.ToByte(byTargetByte | 0x20);}else if (nValue == 0){byTargetByte = Convert.ToByte(byTargetByte & 0xdf);}break;case 3:nValueOfTargetPos = (byTargetByte >> 4) & 0x01;if (nValue == 1){byTargetByte = Convert.ToByte(byTargetByte | 0x10);}else if (nValue == 0){byTargetByte = Convert.ToByte(byTargetByte & 0xef);}break;case 4:nValueOfTargetPos = (byTargetByte >> 3) & 0x01;if (nValue == 1){byTargetByte = Convert.ToByte(byTargetByte | 0x08);}else if (nValue == 0){byTargetByte = Convert.ToByte(byTargetByte & 0xf7);}break;case 5:nValueOfTargetPos = (byTargetByte >> 2) & 0x01;if (nValue == 1){byTargetByte = Convert.ToByte(byTargetByte | 0x04);}else if (nValue == 0){byTargetByte = Convert.ToByte(byTargetByte & 0xfb);}break;case 6:nValueOfTargetPos = (byTargetByte >> 1) & 0x01;if (nValue == 1){byTargetByte = Convert.ToByte(byTargetByte | 0x02);}else if (nValue == 0){byTargetByte = Convert.ToByte(byTargetByte & 0xfd);}break;case 7:nValueOfTargetPos = byTargetByte & 0x01;if (nValue == 1){byTargetByte = Convert.ToByte(byTargetByte | 0x01);}else if (nValue == 0){byTargetByte = Convert.ToByte(byTargetByte & 0xfe);}break;default:break;}if (nValueOfTargetPos != -1){return byTargetByte;}else{return 0;} }


測試案例:

把每位全為1的字節置0

Byte b = Convert.ToByte(0xff); richTextBoxMain.Text = "byte初始狀態: " + Convert.ToString(b, 2).PadLeft(8, '0') + "\r\n"; for (int i = 0; i < 8; i++) {b = s_SetBit(b, i, 0);richTextBoxMain.Text += "byte修改第" + i + "位后的結果: ";richTextBoxMain.Text += Convert.ToString(b, 2).PadLeft(8, '0') + "\r\n"; }

結果如下:

byte初始狀態: 11111111
byte修改第0位后的結果: 01111111
byte修改第1位后的結果: 00111111
byte修改第2位后的結果: 00011111
byte修改第3位后的結果: 00001111
byte修改第4位后的結果: 00000111
byte修改第5位后的結果: 00000011
byte修改第6位后的結果: 00000001
byte修改第7位后的結果: 00000000

?

?

2. 獲得字節中某位的值

static public int s_GetBit(Byte byTargetByte, int nTargetPos) {int nValue = -1;switch (nTargetPos){case 0:nValue = (byTargetByte >> 7) & 0x01;break;case 1:nValue = (byTargetByte >> 6) & 0x01;break;case 2:nValue = (byTargetByte >> 5) & 0x01;break;case 3:nValue = (byTargetByte >> 4) & 0x01;break;case 4:nValue = (byTargetByte >> 3) & 0x01;break;case 5:nValue = (byTargetByte >> 2) & 0x01;break;case 6:nValue = (byTargetByte >> 1) & 0x01;break;case 7:nValue = byTargetByte & 0x01;break;default:break;}return nValue; }

?

?


轉載于:https://www.cnblogs.com/jingmoxukong/archive/2011/07/27/2118291.html

總結

以上是生活随笔為你收集整理的[C#]我自己写的一个对字节中每位进行修改值的函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。