바이트배열 변환 방법은 여러가지가 있습니다. 데이터 타입별로 변환하는 방법을 알아보도록 하겠습니다. 예를 들면 C# 프로그래밍을 하다 통신프로토콜 개발을 하게 되었는데 바이트통신을 하는 경우가 있을수 있겠죠? 보통 JSON, XML 등으로 문자열기반 통신프로토콜을 많이 사용하지만, 하드웨어 장비들과 통신을 할 경우 바이트배열 기반 통신을 하는 경우가 많습니다.
int, short, float, double, long 바이트배열 변환
숫자값을 가지고 있는 기본 데이터 타입등을 바이트배열로 변환하려면 BitConvert 클래스를 이용해야 합니다. 그리고 GetBytes 함수를 사용해서 리턴값으로 바이트배열을 반환합니다.
BitConvert.GetBytes 오버로드 함수리스트
- public static byte[] GetBytes(Boolean value);
- public static byte[] GetBytes(Char value);
- public static byte[] GetBytes(Double value);
- public static byte[] GetBytes(Half value);
- public static byte[] GetBytes(Int16 value);
- public static byte[] GetBytes(Int32 value);
- public static byte[] GetBytes(Int64 value);
- public static byte[] GetBytes(Single value);
- public static byte[] GetBytes(UInt16 value);
- public static byte[] GetBytes(UInt32 value);
- public static byte[] GetBytes(UInt64 value);
C# 숫자값(정수,실수 등) 바이트배열 변환 샘플코드
정수 바이트 배열로 변환
int intValue = 123456789;
byte[] intBytes = BitConverter.GetBytes(intValue);
실수 바이트 배열로 변환
float floatValue = 3.14f;
byte[] floatBytes = BitConverter.GetBytes(floatValue);
double doubleValue = 2.718281828459045;
byte[] doubleBytes = BitConverter.GetBytes(doubleValue);
바이트 배열을 다시 해당 데이터 타입으로 변환
int restoredIntValue = BitConverter.ToInt32(intBytes, 0);
float restoredFloatValue = BitConverter.ToSingle(floatBytes, 0);
double restoredDoubleValue = BitConverter.ToDouble(doubleBytes, 0);
문자열 바이트배열 변환
문자열을 바이트배열로 변환하기 위해서는 BitConvert 클래스를 사용하지 않고, System.Text.Encoding 클래스를 이용하며, GetBytes를 사용합니다.
Encoding 문자열 인코딩 리스트
- Encoding.ASCII
- Encoding.Unicode
- Encoding.UTF32
- Encoding.GetEncoding(“euc-kr”)
- Encoding.GetEncoding(“iso-8859-1”)
- Encoding.GetEncoding(“shift-jis”)
통신 규약에 맞는 문자집합을 선택해서 인코딩 하시면 됩니다. 요즘은 한글깨짐문제를 피하고 다른언어들과의 호환성을 위해 UTF-8을 많이 사용하는 추세입니다.
문자열을 바이트배열로 변환 샘플코드
string myString = "Hello, World!"; // 변환할 문자열
byte[] byteArray = Encoding.UTF8.GetBytes(myString);
바이트배열을 문자열로 변환
string myString = Encoding.UTF8.GetString(byteArray);