2012-05-11 5 views
3

안녕하세요. 저는 현재 델파이 코드를 .NET 으로 변환하고 있습니다. 데이터베이스에이 암호가 있습니다. 암호 해독했지만 문제는 바이트 배열입니다.UnicodeEncoding 출력을 일반 문자열로 변환하는 방법은 무엇입니까?

을 heres 나는

Private Function EnDeCrypt(ByVal Value As String) As String 

    Dim transformed = Encoding.Unicode.GetBytes(Value).Select(_ 
     Function(item) Not item) 
    Return Encoding.Unicode.GetString(transformed.ToArray()) 

End Function 

결과 지금까지 무슨 짓을했는지 :»º ¯³¶½ = edplib (인쇄 할 수없는 문자)

내 문제는
제안 문자열로 출력을 변환하는 방법입니다 그리고 도움을 크게 주신다면

+2

'GetString()'을 호출하기 전에'transformed.ToArray()'에 의해 반환 된 raw 바이트의 16 진수 값은 무엇입니까? 'Encoding.Unicode'을 사용하면, 여러분의 코드는 바이트가 UTF-16으로 인코딩되었다고 가정하고 있습니다. 분명히 대소 문자가 아니므로, 쿼리가 단지 가비지를 반환하지 않는 한, 다른'Encoding'을 사용해야합니다. LINQ에 익숙하지 않은데 쿼리가 정확히 수행하려고하는 것을 설명 할 수 있습니까? –

+0

이것은 마지막 질문에서 제기 한 인코딩 문제입니다. 내가 물었던 질문은 여전히 ​​유효합니다. –

+0

@remy LINQ 코드는 입력에 대해 비트 단위 부정을 수행하기 만합니다. 사실 나는 그 코드를 썼다. OP에 잘못된 UTF-16이 생성 될 것이라고 경고했지만 OP는 이것이 확실히 필요한 알고리즘이라고 주장했습니다. –

답변

1

짧은 대답은 인코딩 알고리즘이 실제로 UTF-16 문자열을 비트 부정으로 지정한 경우 출력을 인쇄 할 수 없다는 것입니다. 이 알고리즘은 인쇄 할 수없는 출력을 생성합니다.

표시시 base64에 추가 인코딩을 추가하여 코드에서 변환 된 무효화 된 바이트를 표시 가능하게 만들 수 있습니다.

좀 더 정확한 도움이 필요하면 컨텍스트를 설명하고 동기가 무엇인지 설명해야한다고 생각합니다.

+0

데이비드에 대해 무엇을하고 있습니까? 제가 모르는 이상한 C# 또는 델파이 기이입니까? –

+1

@owlstead 이해가 안되는 것은 무엇입니까? –

+0

유니 코드와 바이트 부정 여부는 어떻게됩니까? 이것은 API 중 하나의 특정 구현 세부 사항입니까? –

관련 문제