C# Base64String과 같은 C# 방법이지만 영숫자 (플러스 또는 슬래시 없음)

StackOverflow https://stackoverflow.com/questions/933503

문제

Convert.tobase64String과 유사하지만 영숫자 출력을 제외한 아무것도 생성하지 않는 C# 메소드가 있습니까?

감사!

도움이 되었습니까?

해결책

당신은 아마도 Base32 인코딩과 같은 것을 사용하고있는 것을보고 있습니다. C#에 대한 Base32 인코더/디코더가 있습니다. 여기 Michael Giagnocavo. 자본화 된 문자와 숫자의 조합을 사용합니다.

StackoverFlow에 대한 관련 논의도 있습니다 여기.

편집하다: 우연히 URL-SAFE 관련 Base64 인코딩을위한 것이라면 Base64를 수행하고 "+"를 "-"및 "/"로 "_"로 바꾸십시오. 그러나 나는 추측하고 있습니다. 당신은 그것을 원하지 않을 수도 있습니다.

다른 팁

답은 이제 약간 구식입니다. 미래의 검색 자의 이점 : C#에서 지금이를 처리하는 가장 좋은 방법은 다음과 같습니다.

byte[] b; // fill your byte array somehow
string s = System.Web.HttpServerUtility.UrlTokenEncode(b);

이것은 URL-SAFE 인 Base64- 인코딩 된 문자열을 반환합니다 (이것은 당신이 당신의 질문에 대한 의견에서 실제로 당신이 말한 것입니다).

그런 다음 다시 사용하여 해독 할 수 있습니다.

byte[] b = System.Web.HttpServerUtility.UrlTokenDecode(s);

가능하면 사전 정의 된 문자열로 + 또는 슬래시를 교체 할 수 있습니다.

Base-64의 일반적인 변형 (쿼리 스트링에 사용)은 '+'및 '/'대신 '-'및 '_'를 사용하는 것입니다. 아마도 약간 Replace(...) 각 끝에서 일을할까요?

BitConverter.toString ()을 사용하여 16 진수를 제공 할 수 있습니다. 그러나 결과 문자열은 Base64 인코딩보다 길다.

나는 인코더와 같은 것을 찾고 있었고 나는 https://github.com/renmengye/base62-csharp/

"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHGGHIJKLMNOPQRSTUVWXYZ"캐릭터 공간 범위의 인코더/디코더입니다.

방금 방법을 감았습니다

System.Text.Encoding.UTF8.GetBytes(plainText); 그리고System.Text.Encoding.UTF8.GetString(decoded);

문자열로 쉽게 작동하도록합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top