mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 163

 
Nikolai Semko :

아니, 알아차렸을 것이다. 어떤 경우에는(유니코드로 작업할 때) 이것이 가능하다는 것을 배제하지는 않습니다. 예를 들어 Java에서 char 유형은 2바이트입니다.
이 JSON 라이브러리 와 char 배열 작업의 두 가지 방법으로 암호화 교환에서 데이터를 구문 분석하려고 했습니다.
그 차이는 속도에서 700(!!!)배인 것으로 밝혀졌습니다. 충격을 받았다. 아마도 JSON의 최상의 구현이 없었을 것입니다.


문자는 16LE이고 문자열은 분명히 파스칼에서 가져온 것입니다. 그건 그렇고, Fortran의 어레이

 
Nikolai Semko :

아니, 알아차렸을 것이다. 어떤 경우에는(유니코드로 작업할 때) 이것이 가능하다는 것을 배제하지는 않습니다. 예를 들어 Java에서 char 유형은 2바이트입니다.
이 JSON 라이브러리 와 char 배열 작업의 두 가지 방법으로 암호화 교환에서 데이터를 구문 분석하려고 했습니다.
그 차이는 속도에서 700(!!!)배인 것으로 밝혀졌습니다. 충격을 받았다. 아마도 JSON의 최상의 구현이 없었을 것입니다.

mql 문자열을 dll에 전달할 때 dll 측에서 mql 문자열 유형은 wchar_t*로 허용됩니다.
그리고 유형 크기 불일치는 Java에서만 찾을 수 있는 것이 아니라 아키텍처 유형에 따라 다릅니다. 무엇인지, 운영 체제 또는 하드웨어가 기억나지 않습니다.

700번? Figase, 방금 JSON 구문 분석을 위해 이 라이브러리를 연기했는데 가치가 없습니까?
그리고 StringToCharArray 문자열을 번역 하고 루프에서 배열을 구문 분석하는 것이 더 낫습니까?

 
Roman :

700번? Figase, 방금 JSON 구문 분석을 위해 이 라이브러리를 연기했는데 가치가 없습니까?
그리고 StringToCharArray 문자열을 번역 하고 루프에서 배열을 구문 분석하는 것이 더 낫습니까?

맞는 것 같아요. 그래도 항상 확인해야 합니다. 측정을 합니다. 문자열 작업을 위한 함수가 최선의 방법으로 작성되지 않았다는 점을 배제하지 않고 지금은 수정했습니다.
나는 1년 전에 이 측정을 했다.

물론 char 배열로 작업할 때 더 많은 코드가 있지만 더 유연한 옵션이 있습니다.

 
Roman :

그리고 mql 문자열 아래에 short[] 또는 wchar_t[] 또는 wchar_t*가 있을 가능성이 큽니다.
결국 mql 문자열은 유니코드이고 utf는 2바이트입니다.
그리고 StringToCharArray는 short[]에서 char[]로 변환합니다.

유니코드 != utf && utf != 2바이트(utf utf'y 다름) && MSVC가 표준이 아님

wchar_t의 의미는 지원되는 모든 문자를 하나의 wchar_t(글쎄, 당신의 방식대로)에 맞추는 것이고 I/O 스트림 자체는 로케일 인코딩에서 /로 변환됩니다. 크기/인코딩 보장 없음. dll에서 wchar_t를 받아 들일 때 생각해보십시오. 맞습니까? 글쎄요, 물론 일반적으로 샌드박스 너머의 성인 세계를 바라보는 것이 흥미롭다면 말입니다.

 
Vict :

유니코드 != utf && utf != 2바이트(utf utf'y 다름) && MSVC가 표준이 아님

wchar_t의 의미는 지원되는 모든 문자를 하나의 wchar_t(글쎄, 당신의 방식대로)에 맞추는 것이고 I/O 스트림 자체는 로케일 인코딩에서 /로 변환됩니다. 크기/인코딩 보장이 없습니다. dll에서 wchar_t를 받아 들일 때, 그것에 대해 생각하십시오. 맞습니까? 글쎄요, 물론 일반적으로 샌드박스 너머의 성인 세계를 바라보는 것이 흥미롭다면 말입니다.

예, 유니코드와 UTF는 다른 인코딩이며 이론상 다릅니다.
방금 일어난 일입니다. 유니코드라는 단어를 쓰고 단축하고 싶었지만 아마도 성공적이지 않았을 것입니다.

유니코드 참조에 따르면 표준에는 세계의 거의 모든 서면 언어의 문자가 포함되어 있습니다.
표준은 범용 문자 집합(영어 범용 문자 집합, UCS)과 인코딩 계열(영어 유니코드 변환 형식, UTF)의 두 가지 주요 부분으로 구성됩니다.

그래서 제 생각에 유니코드에는 이미 UTF 인코딩이 포함되어 있기 때문에 단어의 철자를 줄이기 위해 이렇게 넣었습니다.

wchar_t* 정보가 정확한지 아닌지, 저도 모르겠습니다.
나는 dll을 작성하는 방법 기사에서 Renat의 예에 있는 것을 사용했습니다.
mql5 문자열은 UTF를 포함하는 유니코드이므로 기사 예제에서 wchar_t*를 사용하는 것이 논리적이라고 생각합니다.
지원되는 모든 문자를 단일 wchar_t에 맞추려면.

크기/인코딩에 대한 보장에 관해서는 저도 몰랐습니다. 순도를 위해 short *를 사용할까요?
물론 MSVC IDE에서 올바르게 지원하는 경우.
환경은 평소의 사실을 맹세하고 그것을 TRUE로 제공합니다.

 

UTF-8 및 UTF-16에는 해당 비트가 있습니다.

UTF-8 언어에서 페이지는 특수 코드로 전환됩니다.

UTF-16에는 모든 다양한 문자가 동시에 포함됩니다.

 
Edgar Akhmadeev :

UTF-8 및 UTF-16에는 해당 비트가 있습니다.

UTF-8에서는 언어 페이지가 특수 코드로 전환됩니다.

UTF-16에는 모든 다양한 문자가 동시에 포함됩니다.

글쎄요, 많은 사람들이 포럼에 작성하는 내용에서 이해하는 것처럼 mql5 문자열은 UTF-16으로 되어 있습니다.
그리고 mql 문서에서 다음과 같이 작성합니다.
텍스트 문자열은 null로 끝나는 일련의 유니코드 문자 입니다.
이 그림을 보면 mql5 문자열이 어떤 종류의 인코딩인지 이해할 수 있을 것입니다.
그리고 유니코드에 이미 모든 UTF 계열이 포함되어 있다면 왜 UTF라는 단어를 전혀 사용하지 않고 혼동을 일으킬 수 있습니까?
유니코드와 모든 것, 간단하고 명확합니다.
아니면 말해야 할까요?
UTF-16 비트가 있는 유니코드?

일반적으로 개발자 중 한 명이 그 음료를 마시곤 했습니다.
mql 문자열 유형은 버퍼 8바이트와 포인터 4바이트, 총 12바이트의 두 부분으로 구성됩니다.

 
Roman :

예, 유니코드와 UTF는 다른 인코딩이며 이론상 다릅니다.
방금 일어난 일입니다. 유니코드라는 단어를 쓰고 단축하고 싶었지만 아마도 성공적이지 않았을 것입니다.

유니코드 참조에 따르면 표준에는 세계의 거의 모든 서면 언어의 문자가 포함되어 있습니다.
표준은 범용 문자 집합(영어 범용 문자 집합, UCS)과 인코딩 계열(영어 유니코드 변환 형식, UTF)의 두 가지 주요 부분으로 구성됩니다.

그래서 제 생각에 유니코드에는 이미 UTF 인코딩이 포함되어 있기 때문에 단어의 철자를 줄이기 위해 이렇게 넣었습니다.

wchar_t* 정보가 정확한지 아닌지, 저도 모르겠습니다.
나는 dll을 작성하는 방법 기사에서 Renat의 예에 있는 것을 사용했습니다.
mql5 문자열은 UTF를 포함하는 유니코드이므로 기사 예제에서 wchar_t*를 사용하는 것이 논리적이라고 생각합니다.
지원되는 모든 문자를 단일 wchar_t에 맞추려면.

당신은 혼란스러워. 유니코드는 코드가 있는 문자 테이블이며 0-65535 (2바이트)에 맞으면 커집니다. 그리고 문자당 4바이트를 사용하는 것은 굵게 표시됩니다. 가변 길이 인코딩(예: utf-8은 ASCII 문자를 1바이트로 인코딩)인 utf가 유용했습니다. 따라서 유니코드(테이블)에는 utf가 포함되어 있지 않습니다.

크기/인코딩에 대한 보장에 관해서는 저도 몰랐습니다. 순도를 위해 short *를 사용할까요?
물론 MSVC IDE에서 올바르게 지원하는 경우.
환경은 평소의 사실을 맹세하고 그것을 TRUE로 제공합니다.

char16_t, char32_t, 크기가 고정된 유형을 표준에 넣습니다. wchar_t는 다른 의미를 갖습니다.

 
Roman :

글쎄요, 많은 사람들이 포럼에 작성하는 내용에서 이해하는 것처럼 mql5 문자열은 UTF-16으로 되어 있습니다.
그리고 mql 문서에서 다음과 같이 작성합니다.
텍스트 문자열은 null로 끝나는 일련의 유니코드 문자 입니다.
이 그림을 보면 mql5 문자열이 어떤 종류의 인코딩인지 이해할 수 있을 것입니다.
그리고 유니코드에 이미 모든 UTF 계열이 포함되어 있다면 왜 UTF라는 단어를 전혀 사용하지 않고 혼동을 일으킬 수 있습니까?
유니코드와 모든 것, 간단하고 명확합니다.
아니면 말해야 할까요?
UTF-16 비트가 있는 유니코드?

그게 다가 아니다.

ANSI 키릴 자모 = CP1251이므로

유니코드:

UTF-8=CP65001, // 유닉스/리눅스

UTF-16LE=CP1200, // 윈도우

UTF-16BE=CP1251,

UTF-32LE=?,

UTF-32BE=?,

ISO10646:

UCS-2~UTF-16

UCS-4=UTF-32

착란? 아니, 당신은 듣지 못했다.

 
Edgar Akhmadeev :

UTF-8 및 UTF-16에는 해당 비트가 있습니다.

UTF-8 언어에서 페이지는 특수 코드로 전환됩니다.

UTF-16에는 모든 다양한 문자가 동시에 포함됩니다.

어떤 코드 페이지를 말하는 건가요? "특수 코드"는 문자 인코딩을 위한 바이트 수를 결정합니다. 가변 길이 인코딩. UTF-8은 UTF-16이 모든 유니코드 문자를 인코딩하는 것만큼 좋습니다. 그리고 가변 길이의 utf-16(대리 쌍).