В одном столбце у меня есть цепочка битов, закодированная как строковый тип. В другом столбце я хочу иметь те же биты (потенциально начиная с начального 0), но в виде двоичного значения. В конечном счете, я хочу, чтобы это было в шестнадцатеричном представлении (строковое или шестнадцатеричное, не имеет значения).

Как это сделать? Нужно ли что-то программировать для этого или есть более быстрый способ?

Входная ячейка содержит следующую строку: 00000100100011000100100011

Я хочу получить строку: 0123123

2 ответа2

0

Просто разделите двоичное число с помощью mid(cell, index_start, len) и выполните кусочную замену базы с помощью bin2hex() с последующей конкатенацией (через CONCATENATE () - ссылки на ячейки разделяются амперсандами).

Пример строки:

0010000100000001110100101 находится в одной ячейке X1

Разделите его на ceil(len(X1)/8)= 4 ячейки, чтобы получить группы по 8 бит в каждой.

Чтобы разделить его на 4 ячейки, используйте = MID($ X1, start_pos, 8), где startpos - начальный индекс (на основе 1) цепочки битов в X1

В другом наборе из 4 ячеек объедините предыдущие 4 ячейки в гекс, сославшись на них с = BIN2HEX(8bitNrCell, 2)

Объединить предыдущие 4 ячейки с = CONCATENATE(1-я и 2-я ячейки, а также третья и четвертая ячейки)

0
Public Function CRY_BIN2HEX(arg As String) As String
  Dim rez As String
  Dim lcnt As Integer
  For lcnt = 1 To WorksheetFunction.RoundUp(Len(arg) / 4, 0)
    If lcnt = 1 Then
        rez = WorksheetFunction.Bin2Hex(Mid(arg, 1, 4))
    Else
        rez = rez & WorksheetFunction.Bin2Hex(Mid(arg, (lcnt * 4) - 3, 4))
    End If
  Next lcnt
  CRY_BIN2HEX = rez
End Function

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .