2008-11-03 4 views
8

TBytes로 선언 된 바이트 배열을 Delphi 2009에서 유니 코드 문자열로 변환하는 가장 좋은 방법은 무엇입니까? 필자의 특별한 경우 TBytes 배열에는 이미 UTF-16으로 인코딩 된 데이터가 있습니다 (각 문자 당 2 바이트).TBytes (UTF-16)를 문자열로 변환하는 가장 좋은 방법은 무엇입니까?

TBytes는 널 종결자를 저장하지 않으므로 배열에 인접한 메모리에 # 0이있는 경우에만 다음 작업이 수행됩니다.

MyString := string(myBytes); 

그렇지 않으면, 문자열 결과는 (그것도 아마 메모리에 # 0을 발생하는 데 걸린 시간에 따라 읽기 위반이 발생할 수) 마지막에 임의의 데이터를해야합니다.

ToBytes 함수를 사용하면 't'# 0 'e # 0 ''# 0 't '0'이 반환됩니다.

답변

13

나는 충분히 특정하지 않았다 나는 내 원래의 질문을 수정,

TEncoding.Unicode.GetString(MyByteArray); 
8

StringOf는 TBytes를 UnicodeString으로 변환합니다. BytesOf는 UnicodeString을 TBytes로 변환합니다.

+0

감사 브루스를 사용하여 끝났다. TBytes 배열은 utf16 데이터로 인코딩되므로 ToBytes가 작동하지 않습니다. –

+0

달콤한. 8 자만큼 간단합니다 : StringOf :) – Ampere

4

TBytes에 UTF-16 문자가 포함되어 있으면 WideStringOf 및 WideBytesOf를 확인하십시오.