2016-06-24 1 views
1
Dim data As String = "c80378b8" 

Dim bytes As Byte() = System.Text.RegularExpressions.Regex.Matches(Me.data.Substring, ".{2}").Select(Function(x) x.Value).ToArray() 

1진수는 BYTEARRAY하는

Overload resolution failed because no accessible 'Substring' accepts this number of arguments 

내가 (한 번에 2 개 문자)를 data 변수에 16 진수 문자열을 읽을 수 다음 그 값 (소수)를 바이너리로 저장하는 오류 형식 (바이트)은 bytes입니다. 그러나 위의 오류가 발생하며이 오류와 올바른 방법은 무엇입니까? 거기에 하나의 라이너 대안이 있습니까? 이 같은

답변

1

시도 뭔가 :

Imports System.Globalization 

Sub Main() 
    Dim data As String = "c80378b8" 
    Dim bytes As Byte() = BitConverter.GetBytes(Long.Parse(data, NumberStyles.AllowHexSpecifier)) 
End Sub 

이 코드는 먼저 긴에 16 진수 문자열을 구문 분석하고 다음의 바이트를 가져옵니다. 문자열이 16 진수 문자열이 아니면 구문 분석이 실패합니다. 이 코드를 메소드에 넣으면 그 가능성을 고려할 수 있습니다.

편집 : 당신이 보유 할 긴 변수보다 긴 문자열을 변환해야하는 경우

, 당신은 BigInteger 클래스를 사용할 수 있습니다. System.Numerics

Imports System.Numerics 
Imports System.Globalization 

Sub Main() 
    Dim data As String = "4845484848484848484848484848484848484848484848484848484848484848" 
    Dim bigI As BigInteger = BigInteger.Parse(data, NumberStyles.AllowHexSpecifier) 
    Dim bytes As Byte() = bigI.ToByteArray() 
End Sub 
+0

에 대한 참조를 추가합니다'@ Chris' 아니, 코드는'' "4845484848484848484848484848484848484848484848484848484848484848"와 같은 긴 문자열이 작동하지 않습니다 –

+0

Pretty_Girl5 @ - 당신의 질문은 당신이 크기 문자열을 한 것으로 말하지 않았다 . 귀하가 제공 한 정보를 근거로 질문에만 대답 할 수있었습니다. –

관련 문제