2013-11-02 3 views
2

그래서,이 무슨 일이 있었는지입니다 : 내가 대학에 프로젝트에서 일하고 있어요바이트 배열 조작

, 나는이 다음과 같은 배열과 C#에서 클래스가 있습니다.

private byte[] Key = { 123, 217, 19, 11, 24, 26, 85, 45, 114, 184, 27, 162, 37, 112, 222, 209, 241, 24, 175, 144, 173, 53, 196, 29, 24, 26, 17, 218, 131, 236, 53, 209 }; 
    private byte[] Vector = { 146, 64, 191, 111, 23, 3, 113, 119, 231, 121, 252, 112, 79, 32, 114, 156 }; 

이들은 클래스 코드에서 하드 코드되며 텍스트를 암호화하고 암호를 해독하는 데 사용됩니다.

모든 것이 정상적으로 작동하지만 이러한 값을 조작 할 수 있어야합니다. 즉, 이러한 값을 삽입 할 수있는 사용자 인터페이스 텍스트 상자에서 만들고 싶습니다. 알고리즘은 이러한 값을 가져 와서 작동합니다. . 나 문자열이 배열 읽으면

난 얻을 :

7B-D9-13-0B-18-1A-55-2D-72-B8-1B A2-25-70-DE-D1-을 AF-90-AD-35-C4-1D-18-1A-11-DA-83-EC-35-D1

내가 필요로하는 것은 "123, 217, 19 , 11, 24, 26, 85, 45 "그리고 이것을 이미 바이트 배열로 변환하여 다른 바이트 배열로 암호화 클래스를 사용할 수 있습니다. 그리고 ","로 문자열을 다이빙하는 부분을 건너 뛰고 공백을 제거 할 수 있습니다. 모든 스트리밍에 대해 이야기

필자가 연구하지만 난 그냥 캔트 아무것도 찾을 수있다, 나는

어떤 아이디어 ... 등 일반 문자열이나 INT 배열, 변환, 배열 인덱스처럼 그들과 함께 작업해야합니까?

+0

간단히 말하면 질문은 "쉼표로 구분 된 바이트 문자열을 어떻게 바이트 배열로 구문 분석합니까?"와 같이 간단합니다. – vcsjones

+0

"123, 217, 19, 11, 24, 26, 85, 45"문자열을 전달하고 이미 가지고있는 것과 같은 바이트 배열로 변환하려고합니다. 예, Key [0] = 123, Key [1] = 217, 등 .., 나는 일반적인 방법으로 이것을 시도하고 그것은 작동하지 않았다 – JaimeASV

+0

왜, 간단합니까? 그것을 한 lol – JaimeASV

답변

1

당신과 같이 바이트 배열로 콤마 분리 바이트의 문자열을 파싱 할 수

public static byte[] ParseByteArrayFromInput(string input) 
{ 
    return input.Split(',').Select(s => byte.Parse(s.Trim())).ToArray(); 
} 

그것은 "1, 2, 3, 4」등의 입력을 기대할 것이다. 실제로 파싱 할 수 있는지 확인하기 위해 "유효성 검사"를 수행하지 않습니다. 그것은 또 다른 운동입니다. 입력 내용이 "Cat, Dog"와 같으면 실패합니다. 소스 파일의 맨 위에 using System.Linq;이 있는지 확인해야합니다.

다음은 작동 방식입니다. 먼저 입력을 가져 와서 쉼표를 구분 기호로 사용하여 문자열 배열로 분할합니다. 그런 다음 공백을 없애고 byte.Parse을 호출 한 다음 모든 문자를 배열로 변환합니다.

public static byte[] ParseByteArrayFromInput(string input) 
{ 
    var splitInput = input.Split(','); //Splits the input into a string array. The "split" happens on the comma character. 
    var convertToBytes = splitInput.Select(s => //for each of these strings in the split input... 
    { 
     var trim = s.Trim(); //Trim away any whitespace surrounding the number. 
     return byte.Parse(trim); //Parse the trimmed string into a byte. 
    }); 
    return convertToBytes.ToArray();//Convert it into an array. 
} 

이 그냥 의견과 조금 다른 구문으로, 이전의 "확장"버전입니다 : 여기에 몇 가지 의견 분류 코드입니다. LINQ에 대한 자세한 내용은 MSDN documentation on LINQ을 참조하십시오.

+0

, thks – JaimeASV