반응형
어떻게 바이트 배열을 문자열로 안전하게 변환 할 수 있습니까? [복제]
이 질문에 이미 답변이 있습니다.
똑같은 바이트 배열을 되 찾는 한, 나는 인코딩과 물건에 대해 정말로 신경 쓰지 않습니다.
요약하자면, 바이트 배열을 문자열로 변환 한 다음 해당 문자열을 처음 시작했던 동일한 바이트 배열로 다시 변환하는 방법은 무엇입니까?
바이트를 문자열로 변환하는 가장 안전한 방법은 base64를 사용하는 것입니다.
string base64 = Convert.ToBase64String(bytes);
byte[] bytes = Convert.FromBase64String(base64);
이렇게하면 후반부가없는 서로 게이트 쌍의 전반부와 같은 "유효하지 않은"유니 코드 시퀀스를 얻을 수 없습니다. 데이터를 이상한 것으로 정규화하는 것은 아무것도 없습니다 (모두 ASCII입니다). 유니 코드로 등록되지 않은 코드 포인트 나 그와 비슷한 것을 사용할 기회가 없습니다. 아, 그리고 큰 두려움없이 자르고 붙여 넣을 수 있습니다.
예, 3 바이트마다 4 개의 문자로 끝납니다.하지만 데이터가 손상되지 않는다는 지식에 대해 지불하는 적은 비용입니다.
Convert
아래와 같이 클래스를 사용할 수 있습니다 .
/// <summary>
/// Converts a string to byte array
/// </summary>
/// <param name="input">The string</param>
/// <returns>The byte array</returns>
public static byte[] ConvertToByteArray(string input)
{
return input.Select(Convert.ToByte).ToArray();
}
/// <summary>
/// Converts a byte array to a string
/// </summary>
/// <param name="bytes">the byte array</param>
/// <returns>The string</returns>
public static string ConvertToString(byte[] bytes)
{
return new string(bytes.Select(Convert.ToChar).ToArray());
}
/// <summary>
/// Converts a byte array to a string
/// </summary>
/// <param name="bytes">the byte array</param>
/// <returns>The string</returns>
public static string ConvertToBase64String(byte[] bytes)
{
return Convert.ToBase64String(bytes);
}
Convert.ToBase64 설명서 http://msdn.microsoft.com/en-us/library/dhx0d524.aspx를 사용할 수 있습니다 .
반응형
'IT story' 카테고리의 다른 글
XKCD의 Wolfram의 규칙 34 (0) | 2020.09.18 |
---|---|
JFrame 최대화 창 (0) | 2020.09.18 |
객체의 메소드를 얻는 방법? (0) | 2020.09.18 |
정규식 / _ / g는 무엇을 의미합니까? (0) | 2020.09.18 |
PHP : 연관 배열 요소를 배열의 처음으로 이동 (0) | 2020.09.18 |