Конвертировать двоичные данные в HEX в листах Google - PullRequest
0 голосов
/ 30 января 2019

У меня есть лист Google с колонкой, содержащей двоичные данные.Двоичные данные - это 4 32-битных числа.Это пример шестнадцатеричного представления ASCII этих двоичных данных из одной ячейки: c0a80123000006150000000180004203.

Есть ли способ в таблицах Google преобразовать это двоичное число в шестнадцатеричную строку.Я ищу что-то вроде: BIN2HEX(data[0]) = "0xc0".Обычный BIN2HEX не работает, потому что данные больше, чем он может обработать.

Пример файла необработанного текста . Преобразованный лист Google .


Обновление:

На основе одного предложения я создал скрипт API Google для обработки двоичных данных.Тем не менее, результаты, как минимум, странные.

function extractip(binary_data) {
  var blob = Utilities.newBlob(binary_data);
  var ip1 = blob.getBytes()[0];
  var ip2 = blob.getBytes()[1];
  var ip3 = blob.getBytes()[2];
  var ip4 = blob.getBytes()[3];
  
  return Utilities.formatString("%u.%u.%u.%u", ip1, ip2, ip3, ip4);
}

Первые 4 байта двоичного двоичного объекта представляют IP-адрес в форме 192.168.0.X в прилагаемом примере.Тем не менее, вывод возвращается что-то вроде -17.-65.-67.-17.

1 Ответ

0 голосов
/ 01 февраля 2019

Как насчет этой модификации?

В скрипте Google Apps данные, которые были преобразованы в Utilities.newBlob(data).getBytes(), представляют собой массив байтов шестнадцатеричного числа со знаком.Требуется преобразовать массив байтов в шестнадцатеричное число без знака.

Модифицированный скрипт:

function extractip(binary_data) {
  var byteAr = Utilities.newBlob(binary_data).getBytes();
  return byteAr.map(function(e) {return ("0" + (e < 0 ? e + 256 : e).toString(16)).slice(-2)}).join("");
}

Примечание:

  • При использовании, например,пожалуйста, поставьте =extractip(G2) в "H2", как ваша общая таблица.

Редактировать:

Если вы хотите напрямую получить десятичное число, например 192.168.0.X, измените его, как показано ниже.Это образец модификации.Поэтому, пожалуйста, измените его в своей ситуации.

От:

return byteAr.map(function(e) {return ("0" + (e < 0 ? e + 256 : e).toString(16)).slice(-2)}).join("");

До:

return byteAr.map(function(e) {return e < 0 ? e + 256 : e}).join(",");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...