본문 바로가기

프로그래밍/C#

C# 비트연산

http://www.csharpstudy.com/Tip/Tip-byte-bit.aspx
// (// (1) 한 byte 를 Hex 문자로 변환하는 방법법
byte b1 = 0xFE;
string hex1 = b1.ToString("X2");

// (2) byte[] 을 Hex 문자열로 변환하는 방법법
byte[] bytes = new byte[] { 0xA1, 0xB2, 0xC3, 0x11, 0x2F };
string h = string.Concat(Array.ConvertAll(bytes, byt => byt.ToString("X2")));
// 혹은은
// h = BitConverter.ToString(bytes).Replace(""--", "");;


// (3) 한 Hex 문자를 byte 로 변환하는 방법법
byte b2 = Convert.ToByte("3F", 16);
// 혹은은
// b2 = byte.Parse("3F", NumberStyles.HexNumber);;

// (4) 여러 Hex 문자열을 byte[] 로 변환하는 방법법
string hexString = "A1B2C3";
byte[] xbytes = new byte[hexString.Length / 2];
for (int i = 0; i < xbytes.Length; i++)
{
xbytes[i] = Convert.ToByte(hexString.Substring(i*2, 2), 16);
}
// (// (1) bytee를 비트문자열로 변환환
byte a = 0x11;
string s = Convert.ToString(a, 2).PadLeft(8, '0'); // 00010001

// (2) int를 비트문자열로 변환환
int j = 0x01020304;
s = Convert.ToString(j, 2).PadLeft(32, '0');

// (3) 비트 문자열을 1 바이트로 변환환
string bitStr = "01110000";
byte b = Convert.ToByte(bitStr, 2); // 112 = 0x70

// (4) 비트 문자열을 int 로 변환환
string bstr = "00000001000000100000001100000100";
int i = Convert.ToInt32(bstr, 2); // 16909060 = 0x01020304
byte x = 0xF1;
byte y = 0x1F;

byte a = (byte)(x & y); // 0x11
byte o = (byte)(x | y); // 0xFF
byte c = (byte)(x ^ y); // 0xEE
byte d = (byte) ~x; // 0x0E

byte e = (byte)(x << 2); // 0xC4
byte f = (byte)(y >> 2); // 0x07

void TestBitArray()
{
// 8개의 비트를 갖는 BitArray 객체 생성성
BitArray ba1 = new BitArray(8);

// ## 비트 쓰기 ###
ba1.Set(0, true);
ba1.Set(1, true);

PrintBits(ba1); // 11000000

BitArray ba2 = new BitArray(8);
ba2[1] = true;
ba2[2] = true;
ba2[3] = true;
PrintBits(ba2); // 01110000

// ## 비트 읽기 ###
bool b1 = ba1.Get(0); // true
bool b2 = ba2[4]; // false


// ## BitArray 비트 연산 ##
// OR (ba1 | ba2) 결과를 ba1 에
ba1.Or(ba2);
PrintBits(ba1); // 11110000

// AND (ba1 & ba2) 결과를 ba1 에
ba1.And(ba2);
PrintBits(ba1); // 01110000

ba1.Xor(ba2);
ba1.Not();


// ## 기타 BitArray 생성 방법 ###
// bool[] 로 생성성
var bools = new bool[] { true, true, false, false };
BitArray ba3 = new BitArray(bools);

// byte[] 로 생성성
var bytes = new byte[] { 0xFF, 0x11 };
BitArray ba4 = new BitArray(bytes);
}

void PrintBits(BitArray ba)
{
for (int i = 0; i < ba.Count; i++)
{
Console.Write(ba[i] ? "1" : "0");
}
Console.WriteLine();
}

반응형

'프로그래밍 > C#' 카테고리의 다른 글

C# 문자열, 숫자, 영어 검사  (0) 2019.03.24
C# 구조체, 클래스, 리스트  (0) 2019.03.24
C# 해시테이블  (0) 2019.03.24
C# Dictionary 딕셔너리  (0) 2019.03.24
C# 리스트 조회, 리스트 정렬  (0) 2019.03.24