[C#] 비트교환
간만에 프로그래밍 관련 포스팅입니다. 몇년전에 처음 시리얼을 통한 통신 프로그램을 만들던중 사용한 방법이 있었습니다. 이걸 얼마전에 또 쓰게 되었네요. 당시엔 MODBUS 프로토콜이었지만 지금은 LS산전이랑 MELSEC 이란거만 다를뿐 여기서도 비트교환을 써야 하더라구요. 비트교환은 2바이트의 데이터를 교환하는 것으로, 이름은 그냥 생각나는데로 지었어요. (제목은 있어야 하니깐!) ex) 정수 4576을 전송하기 위해 교환처리를 수행. 4576 = 11 E0 -> E0 11 위와 같은 식으로 바꿔줘야 합니다. 여러 방법이 있겠지만. 저는 비트연산을 이용했어요. 4576은 이진수로 나타내면 다음과 같습니다. 1 1 E 0 E 0 1 1 ---- ---- ---- ---- ---- ---- ---- ---- 0001 0001 1110 0000 to 1110 0000 0001 0001 뭐... 설명은 좀 복잡한거 같지만 결국 이겁니다... int 원본 = 4576; byte[] 저장 = new byte[2]; 저장[0] = (byte)(원본) & 0xFF); 저장[1] = (byte)((원본 >> 8) & 0xFF); byte 자체가 1바이트(8bit)만 저장할 수 있기에 첫번째 0xFF를 사용하면 0001 0001 1110 0000 11E0 AND 0000 0000 1111 1111 00FF --------------------------------- ...