Как мне преобразовать `raw` в вектор целых чисел в R? - PullRequest
5 голосов
/ 24 августа 2011

Мне нужно передать raw обратно в Java через JRI, но он не поддерживает raw, только различные другие векторные типы (такие как целые числа). Как преобразовать raw (вектор байтов) в вектор целых чисел?

Я попытался передать данные обратно как вектор строк, но это не работает, потому что JRI неправильно декодирует строку (например, \ x89 'отбрасывается как "").

Также было бы неплохо, если бы он был более эффективным (без коробки). as.integer не работает - он не возвращает байтовые значения символов в массиве, не говоря уже о том, что rawToChar выдает "" для nuls.

Ответы [ 3 ]

4 голосов
/ 27 августа 2015

Продвигаясь дальше, вы можете читать бин непосредственно из необработанного вектора. Итак, мы можем:

> raw
[1] 2b 97 53 eb 86 b9 4a c6 6c ca 40 80 06 94 bc 08 3a fb bc f4
> readBin(raw, what='integer', n=length(raw)/4)
[1]  -346843349  -968181370 -2143237524   146576390  -188941510  
2 голосов
/ 06 февраля 2014

Этот вопрос довольно старый, но для тех, кто (как и я) столкнулся с этим во время поиска ответа: as.integer (raw.vec) работает хорошо.

2 голосов
/ 24 августа 2011

См. Документацию для rawToChar:

rawToChar преобразует необработанные байты либо в одну строку символов, либо в вектор символов из одного байта (с "" для 0).

Конечно, как только вам удастся получить его до character, вы можете легко преобразовать его в целое число с помощью метода as.integer, но будьте осторожными .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...