2014-04-28 3 views
2

길이가 16 진수 문자열로 base64로 변환해야합니다.엑셀 함수에서 16 진수 문자열을 base64로 변환

임의의 길이의 16 진수를 허용하는 = Hex2b64 (Hexstring)와 같은 간단한 형식의 셀 함수를 찾고 있습니다. 나는 여기저기서 조각을 발견했지만 아무도 간단한 코드 블록을 발견하지 못했다.

이 시점까지 수동으로 변환을 수행하기 위해 http://home.paulschou.net/tools/xlate/을 사용했습니다. 변환은 잘 작동하며 모든 관련 데이터베이스에서 데이터를 수신하고 적절히 구문 분석합니다.

내가받는 데이터는 16 진수로 표현 된 이진 값으로, 여러 블록으로 변환되어 있고 내가 공개하지 않은 프로젝트 문서에 따라 긴 16 진수 문자열로 연결되어 있습니다. 육각 = 00014088F6650101393939393939392D30304646463238313030000343332353430342D35353FA10000002805900100002805

및 대응하는 출력 될 것이다 :

전형적인 입력 문자열이 될 B64 = AAFAiPZlAQE5OTk5OTk5LTAwRkZGMjgxMDAAA0MzI1NDA0LTU1P6EAAAAoBZABAAAoAF

+1

환영 오버플 스택. 이 사이트를 참조하십시오 [좋은 질문을하는 법] (http://stackoverflow.com/help/how-to-ask). – RubberDuck

+1

왜 16 진수 문자열을 base64로 변환하겠습니까? 일반적으로 base64를 사용하여 이진 데이터 또는 저장할 의도가없는 컨테이너에 잠재적으로 잘못된 문자가 들어있는 데이터 만 나타냅니다. 정말로 base64로 변환하고 싶다면, 내가 도울 수는 있지만 이것에 대해 신중하게 생각해보십시오. 데이터를 base64로 변환하면 데이터 크기가 4/3으로 확장됩니다. 이것이 유용하다는 것을 알 수있는 유일한 경우는 base64로 인코딩 된 입력 만 허용하는 기존 웹 사이트 또는 웹 서비스와 인터페이스해야하는 경우입니다. – Blackhawk

+0

... 또는 아마도 당신이 a) 다시 이진 데이터로 변환하고 b) 변환하려는 16 진수 문자열 (Excel 셀에 존재할 수 있음)로 일시적으로 표시하는 이진 데이터가 있음을 의미합니까? base64에 이진 데이터? – Blackhawk

답변

4
Function Hex2Base64(byVal strHex) 
    Dim arrBytes 
    If Len(strHex) Mod 2 <> 0 Then 
     strHex = Left(strHex, Len(strHex) - 1) & "0" & Right(strHex, 1) 
    End If 
    With CreateObject("Microsoft.XMLDOM").createElement("objNode") 
     .DataType = "bin.hex" 
     .Text = strHex 
     arrBytes = .nodeTypedValue 
    End With 
    With CreateObject("Microsoft.XMLDOM").createElement("objNode") 
     .DataType = "bin.base64" 
     .nodeTypedValue = arrBytes 
     Hex2Base64 = .Text 
    End With 
End Function 
+0

http://home.paulschou.net/tools/xlate/를 사용하여 전환을 수행했지만 방법이 필요했습니다. 프로세스를 자동화합니다. 이 코드는 웹 사이트 변환기와 같은 대답을 제공하지 않습니다. 예를 들어, HEX = 00014088F66501013을 입력하고 B64 = AAFAiPZlAQED를 얻지 만 코드 블록에서 #value 만 가져옵니다. – WickedMongoose

+0

죄송합니다. 어리석은 실수를 수정했습니다. 이제는 정상적으로 작동합니다. – omegastripes

+0

완벽하게 작동합니다. 고맙습니다! – WickedMongoose

관련 문제