아마도...C++만 사용하던 사람이 C#으로 시리얼이나 이더넷 통신 프로그을 코딩하게 되면 만나게 되는 문제점.... 그것은 바로바로바로바로....
string자료에 핵사값 0x00~0xFF를 넣을 수 없다는 것...
그래서 통신 프로그램에 데이터를 전송하다 보면 특정값이 자기 맘데로 바뀌는 것을 볼 수 있다. 이것은 C#에서 언어코드를 강화했기 때문이라는데...
진짜 급하게 코딩해야 하는데, 이런 현상이 나타나서 정말 미쳐버리는 줄 알았다. 그러다 결국 string의 사용을 포기하고 byte를 사용하였는데, 아무레도 string보다 불편하다.
하여튼....이레저레....좋은 방법이 없나 찼아보다가 아래 방법을 찼았다. 해결의 키는 바로 "28591" 이었던 것이었다.
아래 코드 돌려보면 string에 0x00~0xFF가 잘 쑤셔들어가는 것을 볼 수 있다.
에휴~....어쨌든...
public void test()
{
string TTT;
byte[] ch = new byte[10];
byte[] outt = new byte[1024];
ch[0] = (byte)0;
for (int i = 0; i < 0x100; i++)
{
TTT = Encoding.GetEncoding(28591).GetString(ch, 0, 1);
foreach (byte dd in TTT)
outt[0] = dd;
ch[0] = (byte)(ch[0] + 1);
}
}