Excel에서 16 진수를 10 진수로 변환하려면 어떻게해야합니까?


11

이 값을 포함하는 셀이 있습니다.

0x00006cd2c0306953

숫자로 변환하고 싶습니다.

나는 시도했다 :

=HEX2DEC(C8)

C8내 16 진수 값을 포함하는 셀은 어디에 있습니까 ?

#NUM 오류가 발생합니다.

내가 뭘 잘못하고 있죠?


나에 따르면 C는 자본이 아니라 작을 수도있다. 그래서 'c8'을 시도하십시오
Sandy8086

7
@ Sandy8086 : 엑셀은 세포 혐오의 경우에 신경 쓰지 않습니다
Nathan Fellman

답변:


5

간단하게 사용할 수 있습니다 :

HEX2DEC(right(A1,(len(A1)-2)))

len(A1)줄의 길이를 알려줍니다 0x. 의 길이를 제외하고 0x나머지 문자열은 16 진수입니다. Excel 함수를 사용하여 dec.


이것을 시도 했습니까? 이 페이지에서 무엇을 읽었습니까? HEX2DEC최대 10 개의 16 진수 를 허용하는 것으로 세 번 언급되었습니다 . 질문의 문자열 0x00006cd2c0306953길이는 18 자입니다. 당신의 해결책은 평가합니다 RIGHT(A1,(LEN(A1)-2)); 18−2는 16이므로 16 자리 길이 인를 RIGHT(…)반환합니다 00006cd2c0306953. 선행 0을 제거하더라도 12 자리 숫자는 여전히 큽니다. 이 작업을 수행 할 수 있으면 구성을 설명하십시오. (즉, 어떤 Excel 버전을 사용하고 있습니까?이 작업을하기 위해 까다로운 작업을 했습니까?)
Scott

4

TwiterZX에 표시된 것처럼 Hex2Dec의 입력은 10 자로 제한되며 6cd2c030695312 자로 제한됩니다 . 그래서 그것은 작동하지 않지만 그것을 위해 우리 자신의 기능을 굴려 봅시다. VBA를 사용하여 모듈을 추가하고 다음 코드를 사용하십시오 (필요에 따라 조정해야 할 수도 있음)

' Force explicit declaration of variables
Option Explicit


' Convert hex to decimal
' In:   Hex in string format
' Out:  Double
Public Function HexadecimalToDecimal(HexValue As String) As Double

    ' If hex starts with 0x, replace it with &H to represent Hex that VBA will understand
    Dim ModifiedHexValue As String
    ModifiedHexValue = Replace(HexValue, "0x", "&H")

    HexadecimalToDecimal = CDec(ModifiedHexValue)

End Function

Excel에서하자의 셀 A1에 포함 된 말 0x00006cd2c0306953의 A2의 공식이 =HexadecimalToDecimal(A1)발생합니다 1.19652E+14. 열을 소수가 0 인 숫자로 형식화하면 결과는입니다 119652423330131.


3

HEX2DEC는 10 자로 제한되어 있지만 사용할 수 없다는 의미는 아닙니다. 한 번에 10자를 변환하고 각 사용에 2의 적절한 거듭 제곱을 적용하려면 간단히 여러 번 사용하십시오.

= HEX2DEC(RIGHT(C8,10))+HEX2DEC(MID(C8,3,5))*POWER(16,10)

[면책 조항 : 현재 테스트되지 않음]

나중에 : 테스트 할 준비가 된 스프레드 시트에 있습니다. MID의 3,5를 3,6으로 변경하십시오. 흠 .. 여전히 옳지 않다.

HEX2DEC가 부호있는 16 진 값에 대해 작업 중이므로 첫 번째 용어는 음수입니다. 이유는 확실하지 않지만 다음은 수정하기 위해 2 ^ 40 (또는 16 진수로 16 ^ 10)을 추가하는 고정 버전입니다.

= HEX2DEC(RIGHT(C8,10))+POWER(16,10) + HEX2DEC(MID(C8,3,6))*POWER(16,10)

그러나 RIGHT (C8,10)가 음수 인 경우에만 작동합니다. 내 일반적인 해결책은 다음과 같습니다.

= HEX2DEC(RIGHT(C8,10))+IF(HEX2DEC(RIGHT(C8,10))<0,POWER(16,10),0) + HEX2DEC(MID(C8,3,6))*POWER(16,10)

어이.


1
40 비트 만 부호 비트이므로 64 비트 값을 두 개의 32 비트 값으로 분할하면 항상 양수입니다. 그렇지 않으면 37 비트보다 짧은 경우 16 진 문자열에 0을 채
웁니다.

2

함수를 사용하지 않고이 변환을 수행하는 더러운 방법 중 하나 는이 수식 포럼 을 사용하여 문자열의 각 문자 값을 계산 한 다음 합산하는 것입니다. 이것은 분명히 임시 셀을 사용하여 숫자를 분해하는 것과 관련이 있습니다.

=HEX2DEC(LEFT(RIGHT(A$1,ROW()),1))*POWER(16,ROW()-1)

이 임시 셀을 1 ~ 16 행에 배치한다고 가정하면 오른쪽에서 시작하여 각 문자를 추출하여 값으로 변환 한 다음 16의 관련 거듭 제곱을 적용하면됩니다. 16 개의 셀을 모두 합산하여 값을 얻으십시오.


1
IMHO 16^(ROW() - 1)는보다 깨끗하고 읽기 쉽다POWER()
phuclv

2

다음을 시도하십시오 :

=HEX2DEC(RIGHT(D93;8))+HEX2DEC(LEFT(D93;LEN(D93)-8))*POWER(2;32)

왜 사용하지 2^32않습니까?
phuclv

0

16 진수가있는 열에 0x가 없는지 확인하십시오. 16 진수는 0xC8이 아니라 C8이어야합니다. 도움이 되길 바랍니다.


0

선행 또는 후행 비 16 진 문자 (ABCDEF0123456789)가 있으면 HEX2DEC가 실패합니다. 공간은 보이지 않기 때문에 실제 지뢰입니다. 로그 파일에서 문자열로 표시되는 16 진 숫자는 선행 및 / 또는 후행 공백을 포함합니다. "= HEX2DEC (TRIM (A1))은 일반적으로이 문제를 해결합니다. 그러나 HEX2DEC의 10 자 제한으로 인해"= HEX2DEC (RIGHT (TRIM (A1), 10))와 같은 것이 필요할 수 있습니다.


-2

이 기능은

=HEXDEC(C8)

따라서 HEX와 DEC 사이의 숫자 2가 없습니다.


1
전혀 작동하지 않습니다.
Nathan Fellman

이 기능은 언어에 따라 다르며 Excel 앱의 주요 언어는 무엇입니까?
Riad Krim

영어로 된 오피스 2010
Nathan Fellman

4
HEX2DEC (또는 HEXDEC) 함수는 40 비트 (10 자)로 제한하고 수는 12 개 문자이다 office.microsoft.com/en-us/excel-help/...
리아드 KRIM

이 언어는 어떻게 의존합니까? 심지어 함수와 같은 구분하지있어 ,;여기
phuclv는
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.