Q&A

  • string을 1bit씩 나눠 체크하는 방법 좀...


string을 1bit씩 나눠 체크해야 할 일이 생겼습니다.



해서



s:string;

b:array of byte; 라고 선언하고



s := 'abcdef';

Move(s,b,length(s)); 했습니다.



그담에 하고 싶은것은 가령 b[0] 인 a가...1byte의 bit구성이



00000000인지 10101010인지 알고 싶습니다.



그러니 b[0]의 (n)bit째가 0인지 1인지 알고 싶은거죠.



고수님들의 도움 부탁드립니다...













5  COMMENTS
  • Profile
    타락천사 2000.07.17 01:37
    안녕하세여..타락임다..^^



    제목대로 주어진 수의 좌측에서 k 번째 비트를 얻는 함수임다..



    즐푸 하세여..^^



    function bits(x : LongWord; k : integer): LongWord;

    begin

    Result := (x shr k) and not(not 0 shl 1);

    end;



    타락천사..^________^

  • Profile
    구창민 2000.07.15 23:42
    최종선 wrote:

    >

    > string을 1bit씩 나눠 체크해야 할 일이 생겼습니다.

    >

    > 해서

    >

    > s:string;

    > b:array of byte; 라고 선언하고

    >

    > s := 'abcdef';

    > Move(s,b,length(s)); 했습니다.

    >

    > 그담에 하고 싶은것은 가령 b[0] 인 a가...1byte의 bit구성이

    >

    > 00000000인지 10101010인지 알고 싶습니다.

    >

    > 그러니 b[0]의 (n)bit째가 0인지 1인지 알고 싶은거죠.

    >

    > 고수님들의 도움 부탁드립니다...

    >

    >

    >

    >





    안녕하세요~ 구창민입니다.



    이런형태면 되지 않을까요?



    var c: char;

    b: byte;

    Bitstr : string;

    begin

    c:= 'A';

    b := Byte(c);

    Bitstr := format('%.08x' , [b]);

    ShowMessage(Bitstr); // 00000041

    (? 맞나? 65를 16으로 나누면.. 음..^^;)

    그러고는 원하시는 (n)번째가 뭐 들었나 보면 되겠네요.

    음..

    ShowMessage(BitStr[n]); 음..모..이런식이 되겠네요.

    ...

    end



    잘 안되시면 다시 질문올려주시구요~



    그럼, 즐거운 프로그래밍~

  • Profile
    최종선 2000.07.16 00:11


    날 좋은(?) 주말에 이런 재미없는 질문에 답변 감사드립니다.^^



    알려 주신것만해도 많은 도움이 되는군요...쬐끔더...





    헌데요 그럼 대문자 A는 00000041, 소문자 a는 00000061이 되는군요.



    역시 BitStr[1]은 1, BitStr[2]는 6....소문자의 경우.



    저는 결과를 01100001이라는 2진수(bit)단위로 보고 싶습니다. 즉,



    BitStr[1]은 1, BitStr[2]는 0....하는 식으로요. 그럼 format에서 x로 16진수로



    표현하는건 좀 그렇군요. 어떻게 2진수로 표현하고 참조하는 방법은 없을까요???







    구창민 wrote:

    > 안녕하세요~ 구창민입니다.

    >

    > 이런형태면 되지 않을까요?

    >

    > var c: char;

    > b: byte;

    > Bitstr : string;

    > begin

    > c:= 'A';

    > b := Byte(c);

    > Bitstr := format('%.08x' , [b]);

    > ShowMessage(Bitstr); // 00000041

    > (? 맞나? 65를 16으로 나누면.. 음..^^;)

    > 그러고는 원하시는 (n)번째가 뭐 들었나 보면 되겠네요.

    > 음..

    > ShowMessage(BitStr[n]); 음..모..이런식이 되겠네요.

    > ...

    > end

    >

    > 잘 안되시면 다시 질문올려주시구요~

    >

    > 그럼, 즐거운 프로그래밍~

  • Profile
    최용일 2000.07.16 00:48
    안녕하세요. 최용일입니다.



    type

    TBitStr = array[0..7] of Byte;



    function GetBitStr(Value: Byte): TBitStr;

    var

    I: Integer;

    begin

    for I := 0 to 7 do

    Result[I] := (Value shr I) and $01;

    end;



    //////////////////////////////////////////

    var

    BitStr: TBitStr;

    begin;

    BitStr := GetBitStr(Byte('a'));

    end;



    ^^ 항상 즐코하세요.



    최종선 wrote:

    >

    > 날 좋은(?) 주말에 이런 재미없는 질문에 답변 감사드립니다.^^

    >

    > 알려 주신것만해도 많은 도움이 되는군요...쬐끔더...

    >

    >

    > 헌데요 그럼 대문자 A는 00000041, 소문자 a는 00000061이 되는군요.

    >

    > 역시 BitStr[1]은 1, BitStr[2]는 6....소문자의 경우.

    >

    > 저는 결과를 01100001이라는 2진수(bit)단위로 보고 싶습니다. 즉,

    >

    > BitStr[1]은 1, BitStr[2]는 0....하는 식으로요. 그럼 format에서 x로 16진수로

    >

    > 표현하는건 좀 그렇군요. 어떻게 2진수로 표현하고 참조하는 방법은 없을까요???

    >

    >

    >

    > 구창민 wrote:

    > > 안녕하세요~ 구창민입니다.

    > >

    > > 이런형태면 되지 않을까요?

    > >

    > > var c: char;

    > > b: byte;

    > > Bitstr : string;

    > > begin

    > > c:= 'A';

    > > b := Byte(c);

    > > Bitstr := format('%.08x' , [b]);

    > > ShowMessage(Bitstr); // 00000041

    > > (? 맞나? 65를 16으로 나누면.. 음..^^;)

    > > 그러고는 원하시는 (n)번째가 뭐 들었나 보면 되겠네요.

    > > 음..

    > > ShowMessage(BitStr[n]); 음..모..이런식이 되겠네요.

    > > ...

    > > end

    > >

    > > 잘 안되시면 다시 질문올려주시구요~

    > >

    > > 그럼, 즐거운 프로그래밍~

  • Profile
    최종선 2000.07.16 01:07


    아! 그렇군요. shift를 먼저하면 될걸, and연산부터 했더니 아~~주 길어지더군요^^





    두번째로 이곳에서 큰 도움을 받았습니다.



    누군에게 라도 감사의 말씀은 드려야 할것 같아서요^^



    멀리서(참고로 여긴 일본입니다.-_-;;; 어쩌다 여기까지...) 초보가 잘모르는 길에서 헤메고



    있을때 고수님들의 한마디 한마디는 오아시스와 같습니다.



    다들 모두 자기일로도 충분히 바쁘시겠지만 또다른 도움을 원하는 저같은 초보들에게 많은



    도움이 되주시길 바랍니다.



    다시 한번 감사^^...

    • 조헌철
    • 2000.07.25 06:37
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 괴델
      2000.12.29 00:37
      조헌철 wrote: > 폼 안에서 리얼플레이 실행시키려고 합니다.url은 더블클릭해서 쳐 넣었는데 > 그런데 ...
    • 고유진
    • 2000.07.16 00:34
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김경식
      2000.07.16 00:57
      for i:=1 to 10 do begin with FrmDM_QM.QryTemp3 do begin Close; Sql.Clear...
    • 성찬
    • 2000.07.16 00:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.07.16 00:52
      안녕하세요. 최용일입니다. 델코(www.delphikorea.com)에 가시면 강좌란에 민성기님이 만드신 자석폼이 ...
    • 최종선
    • 2000.07.15 22:58
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2000.07.17 01:37
      안녕하세여..타락임다..^^ 제목대로 주어진 수의 좌측에서 k 번째 비트를 얻는 함수임다.. 즐푸 하세...
    • 구창민
      2000.07.15 23:42
      최종선 wrote: > > string을 1bit씩 나눠 체크해야 할 일이 생겼습니다. > > 해서 > > s:string...
    • 최종선
      2000.07.16 00:11
      날 좋은(?) 주말에 이런 재미없는 질문에 답변 감사드립니다.^^ 알려 주신것만해도 많은 도움이 되는...
    • 최용일
      2000.07.16 00:48
      안녕하세요. 최용일입니다. type TBitStr = array[0..7] of Byte; function GetBitStr(Value: Byte...
    • 최종선
      2000.07.16 01:07
      아! 그렇군요. shift를 먼저하면 될걸, and연산부터 했더니 아~~주 길어지더군요^^ 두번째로 이곳에...
    • wildpie
    • 2000.07.15 21:13
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2000.07.15 21:52
      안녕하세요 하얀까마귀 입니다.. function IncMonth(const Date: TDateTime; NumberOfMonths: Integer):...
    • 김봉준
    • 2000.07.15 21:09
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김희중
      2000.07.18 19:04
      98과 2000의 글꼴차이입니다. 98에서 폼을 작성하셔서 2000에 해 보시면 정상적으로 되지만 2000에서 ...
    • 성호종
      2000.07.15 21:55
      김봉준 wrote: 98에서 다시 글꼴설정하고 화면정렬 다시 한 후 컴파일 하셔야 해요~ 2000에서 작성하면 ...
    • 이은아
    • 2000.07.15 21:05
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2000.07.15 21:57
      안녕하세요 하얀까마귀 입니다.. 전 질문이 active된 폼을 찾는다던지 하는건줄 알았는데... 그건 다 하...
    • parkisu
      2000.07.16 00:28
      하얀까마귀 wrote: > 안녕하세요 하얀까마귀 입니다.. > > 전 질문이 active된 폼을 찾는다던지 하는건...
    • 하얀까마귀
      2000.07.15 22:01
      안녕하세요 하얀까마귀 입니다.. 저도 그 비슷한 일을 겪긴 했는데.. 마땅한 해결책은.... 이미 프로...
    • 윤석주
    • 2000.07.15 20:47
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박상윤
      2000.08.10 05:48
      윤석주 wrote: > 영상보들로 입력되 영상을 저장하려고 합니다. 방법좀 알려주세요 > 잘되어있는 콤포넌...
    • 하얀까마귀
      2000.07.15 22:05
      Copies 입니다.. 여기에 몇장씩 인쇄할지를 지정해주면 됩니다. 그럼.. 즐거운시간 되세요 - 초보...
    • 아리엘
      2000.07.15 22:18
      그거 말구여.. 여러장 나온다 할때.. 만약 두 부를 출력한다면 한부를 쭈욱 출력하고 두번째 다시 출...
    • 왕초보
    • 2000.07.15 19:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2000.07.15 20:38
      안녕하세요 하얀까마귀 입니다. 음.. rowSelect 를 true로 하면 그리드에서 커서(??) 선택되는게 셀이 ...
    • Black}{ole
      2000.07.15 20:42
      어린왕자 wrote: > 고수님 Rx컴포넌트의 메모리테이블 쓰는 방법 좀 갈켜주세요.. 안녕하세요. ^^ 메...
    • 어린왕자
      2000.07.15 22:00
      Black}{ole wrote: > 어린왕자 wrote: > > 고수님 Rx컴포넌트의 메모리테이블 쓰는 방법 좀 갈켜주세요.....
    • Mr. Ziker
      2000.07.25 21:05
      어린왕자 wrote: > Black}{ole wrote: > > 어린왕자 wrote: > > > 고수님 Rx컴포넌트의 메모리테이블 쓰...
    • 뭉치
    • 2000.07.15 18:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 성호종
      2000.07.15 22:00
      뭉치 wrote: 아래의 예제와 아주 흡사한 경우를 말씀드리지요~ 은행에서 통장을 인쇄할때 한번찍었던 내...
    • dims
    • 2000.07.15 18:07
    • 0 COMMENTS
    • /
    • 0 LIKES