본문

Hex Handling in C#

INT / HEX간 변환방법
Int -> Hex : String str = 123.ToString("X");//"7B"
Hex -> Int : int num = int.Parse("123", System.Globalization.NumberStyles.HexNumber); // 291
Hex -> Int 다른방법 : string hex = "ABC"; int myInt = Convert.ToInt32(hex, 16);
//Convert.ToInt32("바꾸고 싶은 숫자", "진수");, 여기서 진수는 2,8,10,16진수만 가능

출처 : Hex Handling in C#


Byte => HEX 변환방법

byte b = 32;
string hexval = b.ToString ('X2');//첫번째 방법
Console.WriteLine("{0:X}",b);//두번째 방법

출처 : Byte to Hex


Byte[] => HEX 변환방법
//첫번째 방법
Byte[] Bytes = {0xFF, 0xD0, 0xFF, 0xD1};// to "FFD0FFD1"
String byteToHex(Byte[] ba)
{
StringBuilder sb = new StringBuilder(ba.Length * 2);
foreach (byte b in ba)
{
       sb.AppendFormat("{0:x2}", b)
}
return sb.ToString();
}

//두번째 방법
Byte[] Bytes = {0xFF, 0xD0, 0xFF, 0xD1}// to "FF-D0-FF-D1"
BitConverter.ToString(Bytes);//-가 보기 흉하다면 replace하면 된다.

//세번째 방법(가장 확실한 방법같음)
public static string HexStr(byte[] p) {
char[] c=new char[p.Length*2 + 2];
byte b;
c[0]='0'; c[1]='x';
for(int y=0, x=2; y<p.Length; ++y, ++x) {
b=((byte)(p[y ]>>4));
c[x]=(char)(b>9 ? b+0x37 : b+0x30);
b=((byte)(p[y ]&0xF));
c[++x]=(char)(b>9 ? b+0x37 : b+0x30);
}
return new string(c);
}
//HexStr(new byte[]{0x00,0xDE,0xAD,0xBE,0xEF,0x99}) ==> "0x00DEADBEEF99"

출처 : byte[] Array to Hex String

댓글

Holic Spirit :: Tistory Edition

design by tokiidesu. powerd by kakao.