IT정보공유/C#

c# 문자열을 16진수 Hex 값으로 변환, string을 byte로 상호변환하는 방법

알지오™ 2021. 1. 20.

프로그래밍을 하다보면 byte와 string을 변환해야할 일이 많습니다.

이때 은근히 함수들이 생각나지 않는 경우가 많습니다.

그럴때를 대비해서 바이트배열이나 문자열을 16진수로, 16진수문자열을 바이트배열로 변한 하는등

다양한 케이스를 통해서 한번 문자열과 바이트, 바이트 배열을 변환 하는 방법을 살펴보도록 하겠습니다.

 

C# 프로그래밍 바이트 배열 문자열 변환

 

1byte 길이의 바이트를 16진수 문자열로 변환하는 방법

//

public string ByteToString(byte srcByte)
{
	return srcByte.ToString("X2")    
}

//


단순하게 바이트를 16진수문자열로 바꾸는건 ToString()함수에 IFormatProvider를 "X2"로 지정하면 변환이 쉽게 됩니다.

srcByte의 16진수 HEX 값이 01 이였다면, 리턴문자열은 "01"이 되겠죠.

 

 

 

바이트배열을 16진수 문자열로 변환하는 방법

//

public string byteArrayToHexString(byte[] convBytes)
{
    return BitConverter.ToString(convBytes).Replace("-", "");
}

//

 

BitConverter클래스를 이용하여 바이트배열을 16진수 문자열로 변환할 수 있습니다. 다만 16진수로 변환된 문자열 사이사이에 "-" 하이픈이 들어가기 때문에 제거를 하기 위해서는 Replace() 함수를 이용해서 문자열 바꾸기를 해주면 됩니다.

 

 

16진수 문자열로 변환된 바이트배열을 문자열로 변환 하는 방법

//

public string byteArrayToString(byte[] srcBytes)
{
	return Encoding.Default.GetString(srcBytes);
}

//

 

위에서 알아봤던 바이트배열을 16진수문자열로 변환하는 것에 대한 반대 개념입니다.

바이트배열로 변환된것을 다시 문자열로 복구하는 셈이죠.

 

 

 

문자열을 바이트배열로 변환하는 방법

//
pubic byte[] getByteArrayFromString(sting sSrc)
{
    byte[] retBytes;
    
    retBytes = Encoding.Default.GetBytes(sSrc);
    
    return retBytes;
}
//

 

파라미터인 sSrc의 문자열이 "1234" 였다면, retBytes는 4자리 배열로 생성이 되고,

retBytes[0] = 49, retBytes[1] = 50, retBytes[2] =51, retBytes[3] =52 가 됩니다.(10진수 기준)

 

* 49의 아스키코드 값이 문자 "1"을 뜻합니다.

 

 

문자열 2자리를 그대로 16진수 HEX 값으로 변경하는 방법

이 부분은 조금 설명이 필요한 부분일것 같습니다. 이해가 잘 안되실수 있기 때문이에요.

문자열 "78"을 16진수 Hex 값 그대로 0x78로 변환하는 방법입니다.

 

//

public byte getHex(string srcValue)
{
	//srcValue = "78";
    
    return Convert.ToByte(srcValue, 16);
    
    //리턴되는 값은 0x78
}

public string getByte(byte srcValue)
{
	//srcValue = 0x78
    
    return Convert.ToString(srcValue, 16);
    
    //리턴값은 "78";
}

//

 

이렇게 byte 변환된 경우 다시 문자열 78로 변환할 때는 Convert 클래스의 ToString(byte) 함수를 이용하면됩니다.

 

댓글

💲 추천 글