Byte 데이터로 직렬화를 하는 이유??

yann8166의 이미지

C#프로그래밍을 공부중에 의문이 생겼습니다.

바로, 직렬화인데요.

아마 C# 뿐 아니라 다른 언어에서도 공통되는 부분일 겁니다.

String -> byte[]
int -> byte[]

이와 같이 직렬화를 수행하는 이유가 궁금합니다.

예를들어

String txt = "hello" 라는 문자열이 있다면

실제 메모리상에는 "hello"가 들어간게 아니라 각 문자가 문자코드로 변환된 숫자값
(아스키코드표현이라면) h = 68 e = 65 l = 6c o = 6f로 저장이되어서
0x68656c6c6f 로 저장되어 있을 텐데

이걸 굳이 byte형으로 변환해도(직렬화) 결국은
0x68656c6c6f 로 똑같은 값이 저장 되는것 아닌가요?

twinwings의 이미지

직렬화를 하는 이유는 보통 통신을 하기 위함입니다.
(로컬->로컬 or 로컬->리모트)

1. ByteOrder라고 우선 검색해보시고,

2. String의 경우 직렬화를 하는 이유는 내부적으로 포인터로 구현되어 있는 경우,

메모리가 연속적으로 배치되어 있지 않습니다. 이를 온전히 건내주기 위해서는 객체가 가지고 있는 정보를 모두 연속적으로 배치-직렬화

해줄 필요가 있습니다.

Necromancer의 이미지

고급언어의 각 변수나 클래스는 내부구조가 제각각이고, 거기다 컴파일 완료되고 돌고 있는 실제 구현물에서 어떻게 저장하는지는 하나도 정해져 있지 않습니다. 여기에 더해서 한 프로그램 내에 있는 같은 형의 변수라 해도 프로그램이 작동하는 동안에는 내부구조가 달라도 아무 문제 없습니다. 언어에서 요구하는 spec만 맞춰주기만 하면요.
근데 이걸 다른 프로그램으로 전달하기 위해서는 이래서는 안되기 때문에 일정한 형식의 raw byte 형태로 변환이 필요하고 이 작업이 직렬화입니다.

** 같은 언어라도 컴파일/인터프리팅에 사용된 프로그램이 다르면 직렬화 방식도 다를 수 있고 이경우는 직렬화해도 통신 안됩니다.

Written By the Black Knight of Destruction

shint의 이미지

저는 사용하지 않아서 잘 모르겠네요. ㅇ_ㅇ;;
좀 더 데이터를 편하게 사용하려고 만든거 같습니다.

Visual Studio 에서라면. 정확한 값을 F9 F5 F10 으로 하나씩 확인해보실 수 있습니다.

C#에서 String과 Byte는 클래스'인데. 마우스 우측키를 누르고. 메뉴에서 정의로 이동을 선택하면. 클래스의 헤더파일로 이동할 수 있습니다.

좀 더 정확한 내용은 C# 책을 보시거나. 학원 선생님이나. 직업학교. C# 전문 프로그래머. 데브피아등에 문의해보셔야 할거 같습니다.

Serialization (C# ) - MSDN에 문서가 하나 보이네요.
https://msdn.microsoft.com/en-us/library/mt656716.aspx

Serialize와 Deserialize를 학습하기에 좋은 예제 입니다. | Other
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=18&MAEULNo=8&no=678&ref=319

-----------------------------------------------------------------
String msdn C# - 구글에서 검색
https://www.google.co.kr/?gfe_rd=cr&ei=hF6cV7K6EoLM8geTspOADQ#q=String+msdn+C%23

byte[] msdn C# - 구글에서 검색
https://www.google.co.kr/?gfe_rd=cr&ei=hF6cV7K6EoLM8geTspOADQ#q=byte%5B%5D+msdn+C%23

직렬화 - 네이버책
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=%EC%A7%81%EB%A0%AC%ED%99%94

-----------------------------------------------------------------
직렬화 msdn C# - 구글 검색
https://www.google.co.kr/?gfe_rd=cr&ei=hF6cV7K6EoLM8geTspOADQ#q=%EC%A7%81%EB%A0%AC%ED%99%94+msdn+C%23

c# string byte 네이버 검색

C-string을-byte-배열로-변환
http://cybersecurity.tistory.com/entry/C-string%EC%9D%84-byte-%EB%B0%B0%EC%97%B4%EB%A1%9C-%EB%B3%80%ED%99%98

C# -- String, char, byte 변환하기
http://freeprog.tistory.com/220

[C#] String을 자를 때 한글 깨짐 방지(Byte 형태로 자르기(EUC-KR) ) C Sharp
http://blog.naver.com/myheredity/130146446519

-----------------------------------------------------------------
직렬화'를 검색

자바 직렬화 (Java serialization)
http://www.slideshare.net/sunnykwak90/java-serialization-46382579

[Serialization] Serializa.. - 네이버블로그
http://blog.naver.com/zoomen1004/220683928722

MFC 사용자 정의 데이터 직렬화
http://petra.tistory.com/933

[C#] 12. 직렬화와 리플렉션 - 선별적 직렬화
http://ehclub.tistory.com/2532

체 직렬화 파일 읽고 쓰기
http://blog.daum.net/modong518/691

직렬화 [ serialization음성듣기 , 直列化 ]
http://terms.naver.com/entry.nhn?docId=1594666&cid=50372&categoryId=50372

자바 직렬화 알려주세요..ㅜㅜ
http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040201&docId=240594431&qb=7KeB66Cs7ZmU&enc=utf8&section=kin&rank=1&search_sort=0&spq=0

MFC 직렬화, CArchive
http://petra.tistory.com/932

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.