본자료를 읽으신분은 꼭 해답을 부탁드립니다.
TCP/IP통신을 할려고 합니다.
통신 PACKET 구조는 다음과 같다고 가정할때
코드 이름 주소 나이
String(10), String(10), String(40), integer
위의 Packet코드는 총 64Byte입니다. integer변수는 4바이트를 차지하더군요.
이값을 TCP/IP 컴포넌트를 이용하여 수신 받어서 String으로 선언된 변수에
대입하였습니다. 그리고 코드,이름,주소는 Copy함수를 이용하여 사용할수 있지만
나이의 Integer로 선언된 값은 어떤식으로 하여 Integer형 값으로 변환가능할까요 ?
**) 송신측 서버는 unix를 이용한 C프로그램입니다. 그리고 구조체를 이용하여
바로 전송합니다.
**) 나이의 값을 BCD코드로 변환하여 받으면 좋겠지만 현재는 그럴수 있는 형편이
아닙니다.
즉, 00 00 00 01 이 들어오면 1이구.. 00 00 00 10 이 들어오면 2..
즉, 이진수로 값이 들어온다는 이야기죠?
그렇다면 BinToInt라는 함수를 만들어서 사용하면 어떨까요?
온라인상에서 작성을 하는것이라 수정이 필요할 지 모릅니다...
function BinToInt(Str : String) : Integer;
var
i : integer; //순환문을 위해
TempRes : integer; //임시 결과값
MValue : integer; //곱해질 값
begin
MValue := 1;
TempRes := 0;
Str := Trim(Str); //공백을 제거한다.
for i := Length(Str) downto 1 do
begin
TempRes := TempRes + (StrToInt(Str[i])*MValue);
MValue := MValue * 2;
end;
Result := TempRes;
end;
예상대로라면 위의 함수가 BinToInt('00 00 10 00')을 하면 결과값이 8 이나오겠죠? 그럼.. 도움이 되셨는지...
바이도 께서 말씀하시기를...
> 본자료를 읽으신분은 꼭 해답을 부탁드립니다.
>
> TCP/IP통신을 할려고 합니다.
> 통신 PACKET 구조는 다음과 같다고 가정할때
>
> 코드 이름 주소 나이
> String(10), String(10), String(40), integer
>
> 위의 Packet코드는 총 64Byte입니다. integer변수는 4바이트를 차지하더군요.
>
> 이값을 TCP/IP 컴포넌트를 이용하여 수신 받어서 String으로 선언된 변수에
>
> 대입하였습니다. 그리고 코드,이름,주소는 Copy함수를 이용하여 사용할수 있지만
>
> 나이의 Integer로 선언된 값은 어떤식으로 하여 Integer형 값으로 변환가능할까요 ?
>
> **) 송신측 서버는 unix를 이용한 C프로그램입니다. 그리고 구조체를 이용하여
>
> 바로 전송합니다.
>
> **) 나이의 값을 BCD코드로 변환하여 받으면 좋겠지만 현재는 그럴수 있는 형편이
>
> 아닙니다.
>