전문을 만들고 있는데, binary mode 로 전문에 어떻게 담아야할까요?

질문

안녕하세요… 전문을 만들어보고 있는데요.

위의 사진에서 “실 동의자료 Data (Binary 모드)” 를 전문에 어떻게 담아야 하는지 궁금합니다
실 동의자료는 pdf 파일로 되어 있습니다.

검색을 해보고 저번에도 이곳에 질문을 했을 때

아래와 같은 방법으로 해봤었습니다.

binaryData = System.IO.File.ReadAllBytes(filePath);

하지만 이 방법은 아닌 것 같아서 질문 다시 드립니다…

=================
해당 전문을 필요한 업체에 문의를 해서 아래와 같은 답변을 얻었습니다.

==================

  1. 동의자료(예: PDF) 파일을 그대로 EI13 13번 필드에 Write 하시면 됩니다.
    EI13에 동의자료를 그대로 붙인다고 생각하시면 됩니다.
    Java를 사용해서 개발한다고 생각하면,
    PDF 파일을 File 객체로 읽어서 Byte를 값을 EI13에 그대로 복사하신다고 생각하시면 됩니다.

========================

위 내용의 경우를 c# 으로 구현을 한다면,
byte[] binaryData;

            try
            {
                // Read the file as binary data
                binaryData = System.IO.File.ReadAllBytes(filePath);

                // Convert binary data to a single-line string
                string binaryString = BitConverter.ToString(binaryData).Replace("-", "");

                // 이진 데이터를 문자열 배열에 담기
                agreeDatas[i] = binaryString;

                i++;
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }

이런 식으로 해주는게 맞을까요? System.IO.File.ReadAllBytes 이 메소드로 byte 값을 가져오고, BitConverter.ToString(binaryData).Replace(“-”, “”) 이 메소드를 사용해서 문자열 1줄로 만들어서 전문에 포함시키면 될까요??

1개의 좋아요

문자열 가져와서 인코딩한 바이트 배열을 넣으면 안되나요?

1개의 좋아요

Mode에 따른 규칙이 있을 것 같습니다. X는 보통 헥사코드(바이너리 형태를 헥사 형태로 표현하는 것)를 의미하긴 하는데, 비고에 Binary 모드라고 되어있어서 모호하긴 합니다. 아마도 각 Mode에 따른 규칙 설명이 있을 것입니다.

1개의 좋아요

네 … base64 로 인코딩해서 할 경우 안되더라구요

1개의 좋아요

질문2
이런 식으로 data를 담아서 전문을 만드는 규칙만 있구요…
binary 모드가 정확히 무엇인지는 문서에 없네여…

1개의 좋아요

전문의 형태로 봤을 때는 바이너리 데이터는 아닌 것 같습니다. 아마도 예시 샘플이 있을텐데 제공받지 못했을까요? (확률적으로는 헥사 코드일 가능성이 높아 보입니다.)

1개의 좋아요

예시 샘플은 제공받지 못했습니다, 답변 보고 바로 예시 샘플 문의 넣었네요!!
헥사 코드라고 한다면… 어떤 부분을 검색해서 찾아보면 될까요?

===== 검색을 해보니 아래와 같은 내용이 나오는데요… BitConverter 라는 메소드를 이용하면 되는 것일까요?

// convert byte array from file to hex values
public static string ConvertByteToHex(byte[] byteData)
{
string hexValues = BitConverter.ToString(byteData).Replace(“-”, “”);

return hexValues;
}

1개의 좋아요

궁금한게 있는데요, DataBlock1의 905를 제외하고 나머지는 1024로 채우던가 마지막 블록에는 빈칸으로 1024개 채워서 만드신건 맞으시죠?

1개의 좋아요

넵 맞습니다

  • FILLER 항목 길이 계산 : (1024 - (119 + 동의자료 길이) MOD 1024)) MOD 1024

반칸으로 채우는 FILLER 를 위와 같은 수식으로 계산해서 채웠어요…

1개의 좋아요

데이터 가져오는건 System.IO.File.ReadAllBytes(filePath); 이 맞을것같고, 앞에 식별정보를 어떻게 만드느냐가 중요할것같은데… 식별정보는 어떻게 만드셨나요? 문자열로 만들고 바이트 배열로 변환하신건가요?

1개의 좋아요

아뇨 식별정보의 경우 아래 사진에 있는 내용으로 문자열 만들었어요

질문

식별정보는 아래처럼 문자열로 만들었어요

AE1112220000001 9966910448 48100002222 0201005901786310 202304041pdf 0077454

그리고나서 이 식별정보 문자열 다음에 pdf 파일을 bytes 로 변환해서 붙여줘야 합니다…
그래서
// Read the file as binary data
binaryData = System.IO.File.ReadAllBytes(filePath);

            // Convert binary data to a single-line string
            string binaryString = BitConverter.ToString(binaryData).Replace("-", "");

이 소스 코드 사용했어요

1개의 좋아요

식별자가 119글자가 되어야하는데 적어주신건 76자네요. 혹시 중간에 자르신건가요?

2개의 좋아요

아아 이해했습니다.
첫번째 헤더가 있고, 각 문서들마다 문서의 속성을 서술하는 식별자가 있네용

2개의 좋아요

예 맞습니다! 식별자 119 글자는 빈공간까지 포함해야해서 그 부분은 확인했더니 119 글자 맞습니다, 문제는 이제 식별자 뒤에 파일을 byte 변환한 값을 붙여줘야하는데 ㅜㅜ 제대로 한 것 같은데도 전문이 잘못 만들어졌다고 결과값이 오네여

2개의 좋아요

제가 보기에는 pdf를 bitconverter로 변환안하고 그냥 그대로 보내면 될듯싶은데요…
그래야 받는입장에서 사이즈만큼 데이터를 잘라서 pdf로 역직렬화하여 파일을 만들기만하면 되니깐요ㅎㅎ

2개의 좋아요

혹시 파일 한개 기준으로 보내신 데이터 전문은 생략하고 볼 수 있을까요?

2개의 좋아요

그냥 그대로 보낸다는게 혹시 이러너 말일까요??

=====
byte[] binaryData;
binaryData = System.IO.File.ReadAllBytes(filePath);

                string strPdfbinaryData = "";
                foreach (byte b in binaryData)
                {
                    strPdfbinaryData += b.ToString();
                }

System.IO.File.ReadAllBytes 이 메소드 사용해서 pdf 파일을 byte 배열로 변환하고,
bytes 배열에 있는걸 반복문으로 byte를 뽑아서 문자열에 합쳐주는게 맞을까요?

2개의 좋아요

보낸 데이터 전문은 생략하고 볼 수 있게 한다는 말이 무슨 말인지 이해를 못 하겠습니다 ㅜㅜ

1개의 좋아요

제가 잘못 말씀드렸네요ㅎㅎ ‘동의 자료 데이터’ 빼고 결과값을 보고 싶었습니다.

2개의 좋아요

AE1112110000000202304049966910448 0000001 / 여기까지가 head record 구요. AE1112220000001 9966910448 48100002222 0201005901786310 202304041jpg 0002614 이건 data record

입니다!

2개의 좋아요