Я хотел бы записать / прочитать таблицу данных ниже в / из двоичного файла.
tb = data.table(KEY=c("k1","key2"),VAL=c(1,10))
Поскольку длина полей не фиксирована, я хотел бы указать size = 20 к КЛЮЧУ и размер = 8 к ВАЛ.
fn = "C:/test.dat"
ff <- file(fn,"wb")
for (i in 1:nrow(tb)){
rec = tb[i,]
writeBin(as.character(rec$KEY), ff, size=20, endian="little")
writeBin(as.numeric(rec$VAL), ff, size=8, endian="little")
}
close(ff)
Я ожидал, что размер файла станет (20 + 8) * 2 = 56, но это 3 + 8 + 5 + 8 = 24.
ff <- file(fn,"rb")
s <- file.info(fn)$size
1) Прежде всего, я не уверен, почему значения KEY занимают 3 и 5 байтов вместо их фактического размера 2 и 4.
2) Но, что более важно почему они не последовали за размером, который я там положил? И как мы можем принудительно установить фиксированный размер (скажем, 20) в поле KEY, чтобы мы могли читать двоичный файл в предопределенном формате? Мой план состоит в том, чтобы прочитать двоичный файл в последовательности 20 и 8 байтов, чтобы восстановить таблицу.