C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[69414] Re:Re:Re:Re:질문 내용이 충분하지 못했나봅니다 ㅠㅠ... 죄송해요;;
구조체 [] 1667 읽음    2013-04-25 17:28
답변 주셔서 정말 감사합니다!!! ^^
아.. 그런데 제가 질문 내용을 너무 간단히 생각해서 짧게 적었나봐요....
쉽게 생각해서 금방 될줄 알고 ㅎㅎ.. 충분한 설명 못드려서 죄송합니다 ㅠ;;
제가 하고 싶은 것은 이런 건데요.....

통신에 있어서 각 비트 마다 정해진 프로토콜이 정해 있을 겁니다...
그래서 쉽게 그 값을 파악하기 위해 구조체 안에 uint8_t a:1;와 같은 경우를 쓰잔아요..
그런데 문제는 배열을 써버리게 되면 그 비트 값이 어떤 내용인지 알기가 힘듭니다...
그래서 각 비트에 uint8_t flag:1;, uint8_t update:1;, uint8_t checksum:1;... 등 변수명을 주어 그 비트를 쉽게
값도 파악 하고 제어 할 수 있는데요.... 그런데 제가 하려는 것은 구조체에 모든 비트 출력해야 합니다.

즉... 프로그램에서 구조체의 각 비트들이 0인지 1인지 보여 주어야 하는데요.. 또한 그 비트를
한, 두개 값을 변경 시켜야 합니다. 그려려면...
----------------------------------------------------------------------------------------
1. 그 구조체의 모든 비트 값을 파악하여 출력해야하구요...
2. 구조체의 각 비트를 쉽게 제어하기 위해 변수명을 지정해야 합니다....
----------------------------------------------------------------------------------------

변수명으로 모든 비트를 출력하려니 코드가 너무 길어지구여....
출력을 위해 모든 값을 배열에 넣고 하려니 나중에 비트 제어하기에 힘들어지구여...
그래서 처음엔 구조체를 비트 연산으로 0인지 1인지 출력하고 구조체 변수명을 통해 비트를 제어하려고 했는데요...
구조체가 비트 연산자이 안되는 바람에 여기서 부터 문제가 생긴겁니다....

음... 충분한 설명이 되었나 모르겠네요;;; 뭔가 갑자기 복잡해진듯 ㅎㅎ;;
해결 할 수 있는 방법이 있을까요??? 음.. 어째든 답변 주셔서 감사합니다 ^^



장성호 님이 쓰신 글 :
: 제가 질문을 잘 이해하지 못한듯 하네요
:
: 한번에 본다는것이 비트가 아니라 Byte단위로 보고싶다는 뜻인줄 이해했었습니다.
:
: 님께서 원하는 방식처럼  for문 즉 배열로 접근하려면
: 다음과 같이 operator 오버라이딩 하시면 됩니다.
:
:
: struct ST_DATA
: {
: 	Byte Data[12];
:         //Operator 를 만들어 두시구요 
: 	int operator[](int index)
: 	{
: 		int iByte=index/8;
: 		int iBit=index%8;
: 		return (Data[iByte]>>iBit)&0x01;
: 	}
: };
: //------------------------------------------------
: void __fastcall TForm8::Button1Click(TObject *Sender)
: {
: 	ST_DATA st;
: 
: 	st.Data[0]=0xff;
: 	st.Data[1]=0x88;
: 	st.Data[2]=0xAA;
: 	st.Data[3]=0x55;
: 	for(int i=0;i<32;i++)
: 	{	
:                 //다음과 같이 배열로 접근이 됩니다.
: 		Memo1->Lines->Add(st[i]);
: 	}
: }
: 

:
: 그럼..

+ -

관련 글 리스트
69392 구조체의 비트 값을 알고 싶습니다.. 구조체 1891 2013/04/25
69403     Re:구조체의 비트 값을 알고 싶습니다.. 라스코니 1905 2013/04/25
69404         Re:Re:해보시면 알겠지만 구조체라 그게 안되네요 ㅎㅎ;; 구조체 1786 2013/04/25
69407             Re:Re:Re:해보시면 알겠지만 구조체라 그게 안되네요 ㅎㅎ;; 라스코니 1960 2013/04/25
69409                 Re:Re:Re:Re:해보시면 알겠지만 구조체라 그게 안되네요 ㅎㅎ;; 구조체 1885 2013/04/25
69410                     Re:Re:Re:Re:Re:해보시면 알겠지만 구조체라 그게 안되네요 ㅎㅎ;; 라스코니 1565 2013/04/25
69412                         Re:Re:Re:Re:Re:Re:표현이 이상했나요?? ㅎㄷㄷ;; 구조체 1900 2013/04/25
69413                             Re:Re:Re:Re:Re:Re:Re:표현이 이상했나요?? ㅎㄷㄷ;; 라스코니 1898 2013/04/25
69402     Re:구조체의 비트 값을 알고 싶습니다.. 장성호 2090 2013/04/25
69406         Re:Re:다시 문의 드립니다~~ 1852 2013/04/25
69411             Re:Re:Re:다시 문의 드립니다~~ 장성호 1930 2013/04/25
69414                 Re:Re:Re:Re:질문 내용이 충분하지 못했나봅니다 ㅠㅠ... 죄송해요;; 구조체 1667 2013/04/25
69415                     Re:Re:Re:Re:Re:질문 내용이 충분하지 못했나봅니다 ㅠㅠ... 죄송해요;; 라스코니 1988 2013/04/25
69395     Re:구조체의 비트 값을 알고 싶습니다.. 주누 1940 2013/04/25
69397         Re:Re:구조체의 비트 값을 알고 싶습니다.. 구조체 1967 2013/04/25
69399             Re:Re:Re:구조체의 비트 값을 알고 싶습니다.. 주누 2018 2013/04/25
69401                 Re:Re:Re:Re:답변 감사합니다 ^^ 구조체 1894 2013/04/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.