바이너리 파일에서 8 바이트를 읽어서 타임 스탬프로 변환해야합니다. 데이터를 문자 배열로 가져 오는 것은 어렵지 않습니다. 나는 결국
DateTime <- as.raw(c(0x11, 0x77, 0x84, 0x43, 0xe6, 0x11, 0xd8, 0x08))
데이터 형식은 endian = "little"이므로이 배열을 반대로하면 16 진수로 숫자를 나타내는 문자열을 얻을 수 있습니다.
paste(rev(DateTime),collapse="")
"08d811e643847711"이 생성됩니다.
bit64 패키지를 사용하여 이것을 사용하고 싶습니다.
x <- as.integer64(0x8d811e643847711)
하지만 위의 문자열을 as.integer64에 대한 인수로 사용하는 방법을 알 수 없습니다. 즉, 이것은 오류를 생성합니다 (글쎄, NA. 숫자가 아닙니다 ...).
x <- as.integer64(paste(rev(DateTime),collapse=""))
누구든지 저에게 해결책을 알려줄 수 있습니까? TIA, 맥콘시 딘
16 진수가 양수인 경우 (최상위 비트가 설정되지 않음) :
require(bit64)
DateTime <- as.raw(c(0x11, 0x77, 0x84, 0x43, 0xe6, 0x11, 0xd8, 0x08))
x <- as.integer64('0')
x <- 256 * x + as.integer(DateTime[1])
x <- 256 * x + as.integer(DateTime[2])
x <- 256 * x + as.integer(DateTime[3])
x <- 256 * x + as.integer(DateTime[4])
x <- 256 * x + as.integer(DateTime[5])
x <- 256 * x + as.integer(DateTime[6])
x <- 256 * x + as.integer(DateTime[7])
x <- 256 * x + as.integer(DateTime[8])
x
물론 더 우아한 방식으로 작성할 수 있습니다. 그러나 나는 코드가 분명하기를 원했습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다