반응형
문자열관련해서 데이터를 저장하거나 통신을 하다보면 간혹 0x00값이 수신되는경우가 있습니다. 보통 C프로그램과 통신하는 경우 문자열 처리시 NULL문자가 같이 경우가 있는데 해당부분을 제거 하는 방법에 대해 알아보겠습니다. \\0, \\u0000 값으로 데이터가 수신되어 간혹 예기치 않게 처리되는 경우가 있습니다. replace문을 이용해서 간단하게 제거 할수 있습니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace NullStringTest
{
class Program
{
static void Main(string[] args)
{
byte[] arrayMsg = {(byte)'0', (byte)'1', (byte)'2', (byte)0x00 , (byte)'3' };
string b = Encoding.ASCII.GetString(arrayMsg);
string c = Encoding.ASCII.GetString(arrayMsg);
// NULL 문자�-� 제거
c = c.Replace("\0", string.Empty);
Console.WriteLine(b);
Console.WriteLine(c);
using (StreamWriter sw = new StreamWriter("savelog.log"))
{
sw.WriteLine(b, 0, b.Length);
sw.WriteLine(c, 0, c.Length);
}
}
}
}
콘솔출력 결과
savelog.log 파일저장결과 : NULL문자열을 제거 하지 않았을경우에는 NULL값이 저장된 부분을 확인할수 있고 replace문을 사용해서 NULL제거시 해당부분을 제거하고 저장된 부분을 확인할수 있습니다.
'프로그래밍 > C#' 카테고리의 다른 글
[C#] 바이너리데이터 파일읽기/쓰기 (BinaryReader/Writer) (0) | 2021.11.18 |
---|---|
[C#] 빌드시 이미지파일 포함하기 (0) | 2021.09.15 |
[C#] 프로그램 중복실행방지 (뮤텍스,프로세스개수로확인) (0) | 2021.08.22 |
[C#] 윈폼 콘솔로 디버깅하기 (0) | 2021.07.17 |
[C#] MariaDB 연동방법 (3) | 2021.05.23 |