C#에서 BinaryWriter를 통해서 문자열을 Write할경우 앞부분에 Length가 자동 삽입되는 문제
2009. 6. 4. 17:48ㆍ프로그래밍/C#
728x90
반응형
BinaryWriter를 통해서 문자열을 Write할경우 앞부분에 Length가 자동 삽입되는 문제가 있습니다. 경우에 따라서는 아주 편리하게 사용할수 있습니다. 하지만 앞부분의 길이는 1바이트에서 2바이트 가변적입니다. 따라서 내부적으로 규칙을 정하고 프로그래밍하는 경우에는 문제가 발생될 수있습니다. 프로그래머가 원하지 않은 방법일 경우에 말입니다.
문제 :
bw.Write((String)STR.Trim()); //길이+STR형식으로 기록됩니다.
해결방법 :
String FN = "파일이름";
FileStream fs = new FileStream(FN, FileMode.CreateNew, FileAccess.Write);
BinaryWriter bw = new BinaryWriter(fs, System.Text.Encoding.GetEncoding("ks_c_5601-1987"));
int STR_LEN = GetStringLength(STR.Trim()); // 길이를 구합니다.
bw.Write((byte)STR_LEN); // 길이를 입력해줍니다.
byte[] temp = System.Text.Encoding.Default.GetBytes(STR.Trim());
bw.Write(temp, 0, STR_LEN); // 문자열 내용을 입력해줍니다.
문제 :
bw.Write((String)STR.Trim()); //길이+STR형식으로 기록됩니다.
해결방법 :
String FN = "파일이름";
FileStream fs = new FileStream(FN, FileMode.CreateNew, FileAccess.Write);
BinaryWriter bw = new BinaryWriter(fs, System.Text.Encoding.GetEncoding("ks_c_5601-1987"));
int STR_LEN = GetStringLength(STR.Trim()); // 길이를 구합니다.
bw.Write((byte)STR_LEN); // 길이를 입력해줍니다.
byte[] temp = System.Text.Encoding.Default.GetBytes(STR.Trim());
bw.Write(temp, 0, STR_LEN); // 문자열 내용을 입력해줍니다.
728x90
반응형
'프로그래밍 > C#' 카테고리의 다른 글
C#에서 MySQL 연결 검사하기.. (2) | 2012.07.06 |
---|---|
C# 그리고 OpenGL http://www.opentk.com/ (0) | 2010.06.01 |
C#에서 1970이후 지금까지의 밀리세컨트 구하기. (0) | 2010.03.20 |
돌리고 있는 Thread가 너무 높은 CPU점유율을 보일때... (0) | 2010.02.02 |
C#에서 한글 길이 구하기 (0) | 2009.06.04 |