문제
16진수 표기법으로 이스케이프 시퀀스 문자열을 작성하려면 어떻게 해야 합니까?
예:
string s = "\x1A"; // this will create the hex-value 1A or dec-value 26
이와 같이 00에서 FF 사이의 16진수 값으로 문자열을 작성할 수 있기를 원합니다(이 예에서는 1B).
string s = "\x" + "1B"; // Unrecognized escape sequence
어쩌면 16진수 문자열을 만드는 또 다른 방법이 있을 수도 있습니다...
해결책
당신은 문자열에 16 진수 값을 저장하지 않습니다.
당신은 할 수 있지만, 그것은 단지 끈 일 것입니다. 실제로 그 값을 읽기 위해 정수 또는 바이트에 캐스트해야합니다.
int 또는 바이트에 문자 그럴로 16 진수 값을 할당 할 수 있습니다.
Byte value = 0x0FF;
int value = 0x1B;
따라서 16 진 문자를 문자열로 전달할 수 있습니다.
string foo = String.Format("{0} hex test", 0x0BB);
이 문자열이 "126 hex test"를 생성합니다.
그러나 나는 그것이 당신이 원하는 것이라고 생각하지 않습니까?
다른 팁
피해주세요. \x
탈출 시퀀스.멈추는 위치는 데이터에 따라 다르기 때문에 읽기가 어렵습니다.예를 들어, 이 두 문자열을 한눈에 보면 얼마나 많은 차이가 있습니까?
"\x9Good compiler"
"\x9Bad compiler"
전자에서 "\x9"는 탭입니다. 'G'는 유효한 16진수 문자가 아니기 때문에 이스케이프 시퀀스가 여기서 중지됩니다.두 번째 문자열에서 "\x9Bad"는 모두 이스케이프 시퀀스이므로 임의의 유니코드 문자와 "컴파일러"가 남습니다.
대신 \u 이스케이프 시퀀스를 사용하는 것이 좋습니다.
"\u0009Good compiler"
"\u0009Bad compiler"
(물론 탭의 경우에는 \t
하지만 내 말이 무슨 뜻인지 이해하길 바랍니다...)
이것은 물론 원래 질문과는 다소 다르지만 이미 답변되었습니다. :)
16 진수에 대한 ' u'탈출 코드가 있습니다. 16 비트 유니 코드 문자 코드.
Console.WriteLine( "Look, I'm so happy : \u263A" );