2013-11-01 4 views
2

문자열을 바이트 배열로 변환하려고합니다. 바이트 배열의 개별 요소를 보면 예기치 않은 결과가 발생합니다. 예를 들어 "F"인 첫 번째 요소를 보면 15로 변환 되겠지만 대신 102가됩니다. 여기에 오류가 있습니까?문자열 요소를 바이트로 변환합니다.

Console.WriteLine("string[0] = " + string[0]); 
Byte[] data = Encoding.ASCII.GetBytes(string); 
Console.WriteLine("data[0] = " + data[0]); 

string[0] = f 
data[0] = 102 
+6

입니까? – musefan

+2

왜 15 일 것으로 예상됩니까? 무엇이라도 나는 그것을 기대할 것이다 [70] (http://www.asciitable.com/). 또한 문제의 완전한 complieable 예제를 게시하십시오. 지금 코드는 컴파일되지 않습니다. 편집 : 감사합니다 릭, 102'f', 나는'F'를 확인했습니다. –

+2

FYI, 102는 소문자 'f'의 ASCII 코드입니다. – Rik

답변

4

ASCII.GetBytes은 문자의 ASCII 코드를 반환합니다. 행복하게 문자열 "z{}"을 수락합니다.

16 진수 문자열을 정수 값으로 변환하고 싶습니다. 매개 변수를 NumberStyles.HexNumber으로 설정하여 Int32.Parse이 필요합니다.

string s = "1F"; 
int val = Int32.Parse(s, System.Globalization.NumberStyles.HexNumber); 

val 지금 31

+0

감사합니다. 이것이 내가 필요한 것입니다. char에 대해서도 사용할 수 있습니까? 나는 지금까지 운이 없도록 노력하고있다. – Ann

+0

'.ToString()'메서드를 사용하여 char을 문자열로 변환 할 수 있습니다. 그런 다음 그것을 파싱 할 수 있습니다. 아니면 그냥 16 값 ('0'에서 'F'까지 추측)에 대해 '스위치'를 사용하십시오. –

2

소문자 f는 당신이 15 기대하고 있었다 말할 때 F는 70이다 (102) 위의 경우 http://www.asciitable.com

을 확인하시기 바랍니다되는 것, 내 생각 엔 당신이 F를 보았다입니다 16 진수 열에서 ...

+0

+1 전체 토론을 해결할 수있는 링크입니다. –

2

asciitable.com과 같은 것을보고 HEX 값 'F'의 16 진수 10 진수 값이 15라는 것을 알았습니까?

'f'의 십진수 값은 102입니다 (링크 된 페이지의 네 번째 열에 부분적으로 있음).

0

당신의 기대는 당신의 코드는 소문자 'F'에 대해 잘 진수 값을 작동하고, 잘못된 방법 당신도`string`라는 변수를 사용하는 102

관련 문제