2017-11-15 35 views
0

작업은 UNIX 신기원 이후의 밀리 초 수를 나타내는 리틀 엔디안 바이트를 네트워크로 전송하는 것입니다. 32 비트 시스템을 사용합니다 .32 비트 시스템에서 48 비트 숫자를 생성하는 방법

숫자 1510747673476은 11 월 15 일 2017 년의 현재 날짜를 나타냅니다. 32 비트 시스템에서 시스템은이 숫자를 생각할 수 없습니다. 유닉스 시대 이후로는 밀리 초의 원천도 없다. 그러나 그것은 초의 원천을 가지고 있습니다. miliseconds가 항상 0 인 48 비트 숫자를 생성하는 것이 허용됩니다.

yay = 1510747673은 현재 날짜의 UNIX 신기원 이후의 시간 (초)입니다. 대신 1510747673 * 10^3을 포맷하는 방법이 있습니까? 나는 1510747673이라는 숫자의 바이트를 얻었고, 1510747673 * 10^3의 리틀 엔디안 바이트를 구성해야하는 다른 2 바이트를 어떻게 든 발견 할 수 있습니까? 그게 질문입니다.

더 좋은 질문이 있으시면 언제든지 문의하십시오. 목표는 현재 날짜의 6 바이트를 밀리 초 단위로 전달하는 것입니다. 수신 측에서는 리틀 엔디안 및 48 비트 크기로 수신합니다.

+0

여기에 어떤 프로그래밍 언어가 사용되고 있습니까? –

+0

우리는 루아에 대해 이야기하고 있습니다. 관련성이 있습니까? – user8944998

+0

"32 비트"는 단어 크기입니다. 컴퓨터의 제한 사항이 아닙니다. – stark

답변

0

32 비트 데이터 유형에 맞는 초가 y입니다. 리틀 엔디안으로 y + 10^3을 형식화하려고합니다. 따라서 10^3을 나타내는 두 개의 리틀 엔디안 바이트가 필요합니다. 이들은 0xe8 및 0x03입니다.

그래서 32 비트 정수를 포맷하고 y를 나타내는 4 바이트를 얻는 라이브러리를 가져옵니다. 이것들은 48 비트 정수의 가장 중요한 4 바이트입니다. b3, b4, b5, b6이라고 부르십시오. 원하는 little-endian 대답은 0xe8, 0x03, b3, b4, b5, b6입니다.

+0

이것은 정확하지 않습니다. 나는 다른 방법을 찾으려고 노력할 것이지만, 이것은 완전히 틀리다. 가능한 경우이 대답을 완전히 삭제하십시오. –