64 비트 서명되지 않은 32 비트 서명
-
20-09-2019 - |
문제
Java Long Datatype (64 비트) 데이터를 레거시 C ++ 앱 Unsigned Int (32 비트) 데이터 유형으로 변환해야합니다.
데이터가 Linux 타임 스탬프이므로 데이터 손실에 대해 걱정하지 않으므로 AEONS가 서명되지 않은 INT 한도를 누르기 위해 사용됩니다.
이 숫자에 어떤 변환을 적용 해야하는지 아십니까?
미리 감사드립니다!
추신 - 데이터 유형 예제 :
Java -1266336527340
C ++ -1266336583
둘 다 같은 날짜와 거의 같은 시간 (+/- 1 분)을 생산합니다.
해결책
Java 's 날짜 .getTime 번호를 반환합니다 밀리 초 C ++ 코드는 초 에포크에서 1000으로 나눈 다음 절단해야합니다.
int timestampAsInt = (int)(timestampAsLong / 1000);
Java는 서명되지 않은 서명 된 정수 만 가지고 있지만 이것은 작동해야합니다.
다른 팁
long javaTime = someDate.getTime();
int cTime = (int)((javaTime + 500) / 1000);
나는 잘린 것을 선호하지만, 당신은 당신의 비즈니스 규칙에 적합한지를 결정해야합니다.
제휴하지 않습니다 StackOverflow