string을 16진수 형식의 byte로 바꾸거나
byte를 16진수 형식의 string으로 바꾸고 싶은 경우가 많은데,
매번 찾아보게 되어서 정리를 하게 되었다.
(단, string의 길이는 2이다.)
static void Main(string[] args)
{
string str = "79";
byte dec, hex;
// 10진수
dec = Convert.ToByte(str);
Console.WriteLine(dec); // 79로 해석
dec = byte.Parse(str);
Console.WriteLine(dec); // 79로 해석
// 16진수
hex = Convert.ToByte(str, 16);
Console.WriteLine(hex); // 0x79로 해석 -> 121
hex = byte.Parse(str, System.Globalization.NumberStyles.HexNumber);
Console.WriteLine(hex); // 0x79로 해석 -> 121
}
output
79
79
121
121
static void Main(string[] args)
{
string str = "Hello";
byte[] hex_bytes;
hex_bytes = Encoding.Default.GetBytes(str);
foreach(byte hb in hex_bytes)
Console.WriteLine(hb);
}
ASCII 코드 표에 의하면 아래와 같다.
'H' = 0x48 (72)
'e' = 0x65 (101)
'l' = 0x6C (108)
'o' = 0x6F (111)
output
72
101
108
108
111
Console.WriteLine(hb);
을 거치면서 10진수로 변환 되어 출력된다.
따라서 byte를 다시 16진수 형식의 string으로 출력해보자
static void Main(string[] args)
{
byte hex = 0x79;
Console.WriteLine(String.Format("{0:X2}", hex));
Console.WriteLine(Convert.ToString(hex, 16));
Console.WriteLine(hex.ToString("X2"));
}
output
79
79
79
static void Main(string[] args)
{
string str = "Hello";
byte[] bytes;
bytes = Encoding.Default.GetBytes(str);
Console.WriteLine(Encoding.Default.GetString(bytes));
}
output
Hello
static void Main(string[] args)
{
string str = "Hello";
byte[] bytes;
bytes = Encoding.Default.GetBytes(str);
Console.WriteLine(BitConverter.ToString(bytes));
Console.WriteLine(BitConverter.ToString(bytes).Replace("-",""));
}
BitConverter.ToString(bytes)
에서 "-" 문자가 섞여있다.
output
48-65-6C-6C-6F
48656C6C6F