2016-08-09 2 views
0

"768932A3"문자열이 두 개로 나뉘어져 있습니다. 76 89 32 A3 이진으로 변환 할 목적으로. 루핑을 시도했지만 작동하지 않습니다. 친절히 도와주세요 :VB.Net 문자열을 통해 반복

For i = 0 To data.Length - 1 

    j = i + 2 
    incremented &= Convert.ToInt64(data.Substring(i, j), 16) 
    ascii &= Chr(Convert.ToInt64(data.Substring(i, j), 16)) 
    i = j + 2 

Next 
+0

조심해. Chr 귀하의 스레드의 현재 ANSI 코드 페이지를 사용하고 있습니다. 그것이 문자열이 16 진수 문자열로 직렬화 된 시간과 장소와 다르기 만하면 잘못 해석 할 수 있습니다. (그리고 현재의 ANSI 코드 페이지는 거의 ASCII가 아니므로 변수에 오해를 불러 일으킬 수있는 이름이 있습니다.) 실제로 직렬화 중에는 어떤 인코딩이 사용되었는지 확인하고 바로 그 인코딩을 디코딩해야합니다. 텍스트 디코딩은 일반적으로 바이트 배열을 통해 수행되며 System.Text.Encoding 클래스를 사용합니다. [.NET의 문자 인코딩] (https://msdn.microsoft.com/en-us/library/ms404377.aspx)을 참조하십시오. –

답변

0

부분 문자열의 두 번째 매개 변수는 끝 위치가 아니며 시작 위치에서 고려해야 할 문자의 길이입니다.

For i = 0 To data.Length - 1 Step 2 
    ' Not clear what are you trying to do here 
    ' incremented &= Convert.ToInt64(data.Substring(i, 2), 16) 

    Dim value As Long = Convert.ToInt64(data.Substring(i, 2), 16) 


    ascii &= Chr(Convert.ToInt64(data.Substring(i, 2), 16)) 
Next 
+0

처리되지 않은 오버플로 예외에 대한 오류가 발생합니다. –

+0

테스트 문자열 " 768932A3 ". ascii 변수와 증가 된 변수의 데이터 유형은 무엇입니까? – Steve

+0

나는 교정을했고 감사했습니다. –