문자열을 이진수로 변환 한 다음 16 진수 값으로 변환하는 방법은 무엇입니까? 진수 표현 (문자열 또는 16 진수

한 열에는 문자열 유형으로 인코딩 된 비트 문자열이 있습니다. 다른 열에서 동일한 비트 (잠재적으로 선행 0으로 시작)를 이진 값 유형으로 사용하고 싶습니다. 궁극적으로 나는 세 번째 열에서 16 진수 표현 (문자열 또는 16 진수 유형은 중요하지 않음)으로 만들고 싶습니다.

이것은 어떻게 이루어 집니까? 무언가를 프로그래밍해야합니까, 더 빠른 방법이 있습니까?

입력 셀에는 다음 문자열이 포함됩니다. 00000100100011000100100011

문자열을 얻고 싶습니다 : 0123123



답변

이진수를 mid (cell, index_start, len)로 나누고 bin2hex ()를 사용하여 밑 부분을 연결하고 CONCATENATE ()를 통해 연결합니다 (셀 참조는 앰퍼샌드로 구분됨).

행 예 :

0010000100000001110100101은 하나의 셀 X1에 있습니다.

ceil (len (X1) / 8) = 4 셀로 분할하여 각각 8 비트 그룹을 얻습니다.

4 개의 셀로 분할하려면 = MID ($ X1, start_pos, 8)를 사용하십시오. 여기서 startpos는 X1에서 비트 열의 시작 색인 (1 기반)입니다.

다른 4 개의 셀 집합에서 = BIN2HEX (8bitNrCell, 2)로 참조하여 이전 4 개의 셀을 16 진으로 콘서트

= CONCATENATE (1stcell & 2ndcell & thirdcell & fourthcell)로 이전 4 개의 셀을 연결


답변

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


답변