본문 바로가기

윈도우 프로그램/C#

string에 핵사값 쑤셔넣기..

아마도...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);
            }
        }