int32_t나 int16_t는 htonl, htons, ntohl, ntohs 함수로 바이트오더 변환을 할 수 있는데요.. int64_t 타입은 무슨 함수를 써서 변환하나요? int64_t 타입은 위에 나열된 함수로는 변환이 안되는군요.
예전에 쓰던 코드인데..아마 될껍니다. 고쳐 쓰시길..
DWORD64 inverse64(DWORD64 s) { register DWORD64 rstamp = 0x0000000000000000; rstamp |= (s & 0xff00000000000000) >> 56; rstamp |= (s & 0x00ff000000000000) >> 40; rstamp |= (s & 0x0000ff0000000000) >> 24; rstamp |= (s & 0x000000ff00000000) >> 8; rstamp |= (s & 0x00000000ff000000) << 8; rstamp |= (s & 0x0000000000ff0000) << 24; rstamp |= (s & 0x000000000000ff00) << 40; rstamp |= (s & 0x00000000000000ff) << 56; return rstamp; }
LISP 사용자모임http://cafe.naver.com/lisper 방송기술 개발업체http://playhouseinc.co.kr
http://codesearch.google.com 에서 htonll ntohll int64_t 로 검색하시면 64bit byte order 관련 코드들이 많이 나옵니다. 맘에 드는것을 골라서 가져와서 쓰시면 될듯하네요.
4바이트씩 htonl.. 함수 호출해서 다시 합치면 되용....
앞에 4바이트 뒤에 4바이트 위치도 바꿔주고용....
답변 감사합니다. 아래 코드 사용하면 되겠군요.
#include <sys/types.h> #include <netinet/in.h> #include <inttypes.h> #ifdef WORDS_BIGENDIAN #define htonll(x) (x) #define ntohll(x) (x) #else #define htonll(x) ((((uint64_t)htonl(x)) << 32) + htonl(x >> 32)) #define ntohll(x) ((((uint64_t)ntohl(x)) << 32) + ntohl(x >> 32)) #endif
====================== BLOG : http://superkkt.com
텍스트 포맷에 대한 자세한 정보
<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]
예전에 쓰던 코드인데..
예전에 쓰던 코드인데..아마 될껍니다. 고쳐 쓰시길..
DWORD64 inverse64(DWORD64 s)
{
register DWORD64 rstamp = 0x0000000000000000;
rstamp |= (s & 0xff00000000000000) >> 56;
rstamp |= (s & 0x00ff000000000000) >> 40;
rstamp |= (s & 0x0000ff0000000000) >> 24;
rstamp |= (s & 0x000000ff00000000) >> 8;
rstamp |= (s & 0x00000000ff000000) << 8;
rstamp |= (s & 0x0000000000ff0000) << 24;
rstamp |= (s & 0x000000000000ff00) << 40;
rstamp |= (s & 0x00000000000000ff) << 56;
return rstamp;
}
LISP 사용자모임
http://cafe.naver.com/lisper
방송기술 개발업체
http://playhouseinc.co.kr
64bit 에 대한 network/host byte order 변환 표준 함수는 없을겁니다.
http://codesearch.google.com
에서
htonll ntohll int64_t
로 검색하시면 64bit byte order 관련 코드들이 많이 나옵니다.
맘에 드는것을 골라서 가져와서 쓰시면 될듯하네요.
4바이트씩 htonl.. 함수
4바이트씩 htonl.. 함수 호출해서 다시 합치면 되용....
앞에 4바이트 뒤에
앞에 4바이트 뒤에 4바이트 위치도 바꿔주고용....
답변 감사합니다.
답변 감사합니다. 아래 코드 사용하면 되겠군요.
======================
BLOG : http://superkkt.com
======================
BLOG : http://superkkt.com
댓글 달기