블로그 이미지
Every unexpected event is a path to learning for you.

카테고리

분류 전체보기 (2737)
Unity3D (817)
Programming (474)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (228)
협업 (58)
3DS Max (3)
Game (12)
Utility (136)
Etc (96)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (53)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday
04-20 00:00
string을 byte[] 배열로 변환? 

string 문자열을 C#의 Char[] 배열로 변경하는 것은 String 클래스의 ToCharArray()라는 메서드를 사용하면 간단하다. 그렇다면, string은 byte[] 배열로 변경하는 것은 가능한가? 만약 가능했다면, string 클래스 안에 ToByteArray() 같은 메서드가 존재할 듯 한데, 이런 메서드는 존재하지 않는다. 왜냐하면, String은 직접 byte[] 변경할 수 없기 때문이다. 먼저 반대의 경우를 생각해 보자. byte[]를 직접 string으로 변경할 수 있는가? 이를 위해 우선 byte[] 가 어떤 Charset을 가지고 인코딩(Encoding) 되었는지 알아야 할 것이다. 이는 아스키, 유니코드, UTF8, GB18030 등 다양한 인코딩 방식에 따라 바이트들이 의미하는 문자가 완전히 다르기 때문이다. 따라서 byte배열을 .NET의 유니코드 string으로 변경하기 위해서는 해당 바이트가 어떤 인코딩인지 알고 이를 유니코드 String으로 변경하게 된다. 동일한 로직으로 문자열을 Byte배열로 변경할 때도 인코딩 방식에 따라 다른 바이트값들을 갖게 된다. 



String을 Byte[]로 인코딩 

문자열을 Byte[] 배열로 변경하기 위해서는 System.Text.Encoding의 인코딩 방식을 지정한 후 GetBytes() 메소드를 호출하면 된다. 예를 들어, 유니코드 인코딩을 사용하여 Byte[]로 변환하는 경우, System.Text.Unicode.GetBytes() 메서드를 호출하고, UTF8 인코딩을 사용하는 경우, System.Text.UTF8.GetBytes() 메서드를 호출하면 된다. 

예제

// String을 Char[]로 변환 
string str = "Hello 한국";
char[] uchars = str.ToCharArray();

// String은 바이트로 직접 변환할 수 없으며,
// Encoding을 통해 변환 가능. 16바이트 생성
byte[] ubytes = System.Text.Encoding.Unicode.GetBytes(str);

// 보다 컴팩트한 UTF8 인코딩. 12바이트 생성
byte[] utf8bytes = System.Text.Encoding.UTF8.GetBytes(str);




Byte[]을 String으로 변환 

Byte[] 배열을 String으로 변환하기 위해서는 바이트로 인코딩했던 동일한 인코더를 사용하여야 한다. 즉, 유니코드 인코더를 사용하여 String은 Byte[]로 변환했었다면 Encoding.Unicode.GetString()을 사용하여 Byte 배열을 문자열로 변경한다. 

예제

using System.Text;

// Byte Array를 String으로 변환 
string s1 = Encoding.Unicode.GetString(uniBytes);
string s2 = Encoding.UTF8.GetString(utf8bytes);




char[]을 String으로 변환 

char[] 배열을 String으로 변환하는 것은 간단하다. C#에서 char는 이미 유니코드이고, string 문자열은 이런 유니코드 문자 요소들의 집합이므로 String 생성자에 문자배열을 직접할당하여 변환할 수 있다. 




BASE64 인코딩 

Byte[] 배열을 웹상에서 전송하기 위해 많이 사용되는 방식으로 BASE64 인코딩을 들 수 있다. 송신 쪽에서는 Convert.ToBase64String(byte[])를 사용하여 바이트들을 BASE64 인코딩된 문자열로 변경하고 String을 전송하게 되고, 수신 쪽에서는 Convert.FromBase64String(string)을 사용하여 BASE64 인코딩된 문자열을 다시 바이트 배열로 변경하여 사용하게 된다. 

예제

// Byte Array를 BASE64 Encoding
string s64 = Convert.ToBase64String(utf8bytes);

// BASE64 인코딩한 String을 다시 Byte Array로
byte[] bytes64 = Convert.FromBase64String(s64);



[출처] http://www.csharpstudy.com/Tip/Tip-string-encoding.aspx

반응형
Posted by blueasa
, |
아이튠즈(iTunes) 폴더 저장위치 변경하기

아이패드를 이용하기 위해서는 아이튠즈(iTunes)를 PC에 설치해서 사용해야 합니다. 아이튠즈(iTunes)에 아이패드,아이폰을 연결하면 자동으로 백업을 진행 하지요.

 

전 아이패드를 많이 사용안하는데 백업된 자료가 약 8기가 가까이 됩니다. 아이패드를 많이 사용하신다면 용량은 더 크겠지요.

 

아이튠즈가 차지하는 용량이 문제가 안되는 사용자는 이 글이 도움이 안될것이지만 저처럼  VHDX를 이용해서 윈도우를 사용하는 사용자, 용량 작은 SSD사용하는 사용자라면 아이튠즈(iTunes)가 찾이 하는 용량이 부담이 될것입니다.

 

그리고 VHDX를 이용해 자주 윈도우를 밀어버리고 새로운 윈도우를 사용한다면 그것도 불편함을 야기합니다.

 

그래서 저는 아예 아이튠즈(iTunes)폴더를 다른 드라이브로 옮겨 사용하고 있는데 그 방법을 올려볼까 합니다.

 

아이튠즈(iTunes) 폴더 다른 드라이브로 옮겨 사용하기

 

방법은 아주 간답합니다. 한가지 이 글은 윈도우즈 8.1에서 작성되었으니 폴더경로가 다른 운영체제에서는 약간 다를수 있습니다.

 

그럼 시작해 보겠습니다.

 

탐색기에서 왼쪽 표시한 부분 '음악'폴더안에 iTunes폴더가 있습니다. 위 이미지처럼 아이튠즈(iTunes)폴더를 선택하고 마우스 오른쪽 버튼을 눌러 '잘라내기'를 선택 하세요.

 

그리고 아이튠즈(iTunes)폴더를 옮길 드라이브로 이동해서 (전 F드라이브로 지정) 마우스 오른쪽 버튼을 눌러 '붙혀넣기'를 하시면 폴더가 이동됩니다.

 

폴더가 이동되면 바탕화면이나 아이튠즈(iTunes)가 설치된 폴더로 가서 'iTunes'을 실행하는데 이때 키보드 Shift키를 누른 상태에서 아이튠즈를 실행시킵니다.

 

그럼 위 이미지 처럼 'iTunes 보관함'선택 창이 뜹니다. '보관함 선택...'을 클릭하세요.

 

파일 선택 창이 열리는데 iTunes폴더를 이동해 놓으신 드라이브로 가셔서 iTunes폴더안에 'iTunes Library.itl'파일을 선택 후 '열기'버튼을 클릭 합니다.

 

그럼 아이튠즈(iTunes) 폴더 저장위치가 변경되었습니다.

 

 

확실히 확인하기 위해 아이튠즈(iTunes)가 실행되면 '메뉴 -> 기본설정'을 선택해서 '고급'텝을 선택하시면 변경되 경로를 보실수 있습니다.

 

간단하게 아이튠즈(iTunes) 폴더 저장위치를 변경해서 C:드라이브 용량을 확보 하세요.



출처: http://pastimelife.com/566 [잡다한 세상]


반응형
Posted by blueasa
, |