<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Перевод из hex в текст английский+русский]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=12240</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=12240&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Перевод из hex в текст английский+русский».]]></description>
		<lastBuildDate>Thu, 22 Dec 2016 01:09:14 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Перевод из hex в текст английский+русский]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=110000#p110000</link>
			<description><![CDATA[<div class="codebox"><pre><code>HexData := &quot;31 00 2d 00 45 00 6e 00 67 00 6c 00 69 00 73 00 68 00 00 00 32 00 2d 00 20 04 43 04 41 04 41 04 3a 04 38 04 39 04 00 00 00 00&quot;

for k, v in Hex2Text(HexData)
   MsgBox, % v

Hex2Text(hex)  {
   VarSetCapacity(str, StrLen(hex := StrReplace(hex, &quot; &quot;))//2, 0)
   pStrings := [&amp;str]
   
   while RegExMatch(hex, &quot;O)(..)(..)&quot;, match, A_Index = 1 ? 1 : match.Pos(0) + 4)  {
      h := &quot;0x&quot; . match[2] . match[1]
      NumPut(h, (addr := &amp;str + (A_Index - 1)*2) + 0)
      (endOfStr &amp;&amp; h != 0 &amp;&amp; pStrings.Push(addr) &amp;&amp; endOfStr := &quot;&quot;)
      (h = 0 &amp;&amp; endOfStr := 1)
   }
   
   for k, v in pStrings
      pStrings[k] := StrGet(v, &quot;UTF-16&quot;)
   Return pStrings
}</code></pre></div><p>По идее, должно в любом случае сработать. Должны появиться два сообщения, так как здесь две строки, разделённые двухбайтным нулём.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 22 Dec 2016 01:09:14 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=110000#p110000</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Перевод из hex в текст английский+русский]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=109999#p109999</link>
			<description><![CDATA[<p><strong>Mambr</strong><br />Используйте AutoHotkey Unicode.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Thu, 22 Dec 2016 01:03:15 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=109999#p109999</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Перевод из hex в текст английский+русский]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=109998#p109998</link>
			<description><![CDATA[<p>А как выглядит последний вариант?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 22 Dec 2016 00:29:44 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=109998#p109998</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Перевод из hex в текст английский+русский]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=109996#p109996</link>
			<description><![CDATA[<p><strong>teadrinker</strong>, а у меня оба варианта - вообще глухарь.<br />Сейчас ищу вариант, может задействовать в раскодировании какую-нить стороннюю dll ...</p>]]></description>
			<author><![CDATA[null@example.com (Mambr)]]></author>
			<pubDate>Wed, 21 Dec 2016 23:51:42 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=109996#p109996</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Перевод из hex в текст английский+русский]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=109994#p109994</link>
			<description><![CDATA[<p>Не, ну так совсем плохо.</p><div class="codebox"><pre><code>HexData := &quot;31 00 2d 00 45 00 6e 00 67 00 6c 00 69 00 73 00 68 20 00 32 00 2d 00 20 04 43 04 41 04 41 04 3a 04 38 04 39 04&quot;

MsgBox, % Hex2Text(HexData)

Hex2Text(hex)  {
   Loop parse, hex, % A_Space
   {
      if mod(A_Index, 2)
         num := A_LoopField
      else
         str .= Chr(&quot;0x&quot; . A_LoopField . num)
   }
	Return str
}</code></pre></div><p>А вот из предыдущего примера получается:<br /></p><div class="codebox"><pre><code>HexData =
(
31 00 2d 00 45 00 6e 00 67 00 6c 00 69 00 73 00 68 00 00 00 32 00 2d 00 20 04 43 04 41 04 41 04 3a 04 38 04 39 04 00 00 00 00
)

MsgBox, % Hex2Text(HexData)

Hex2Text(hex)  {
   Loop parse, hex, % A_Space
   {
      if mod(A_Index, 2)
         num := A_LoopField
      else
         str .= Chr(&quot;0x&quot; . A_LoopField . num)
   }
   Return str
}</code></pre></div><div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Наверно, закодировать правильно нужно</p></blockquote></div><p>Оказалось, раскодировать. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> В каждом символе два байта, это юникод.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Wed, 21 Dec 2016 22:37:36 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=109994#p109994</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Перевод из hex в текст английский+русский]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=109991#p109991</link>
			<description><![CDATA[<p><strong>teadrinker</strong>, кодировал не я, а программа. Я лишь пытаюсь перекодировать ... пока безуспешно.</p><p>Чтобы не было лишних вопросов, сделаем так:</p><div class="codebox"><pre><code>HexData := &quot;31 00 2d 00 45 00 6e 00 67 00 6c 00 69 00 73 00 68 20 00 32 00 2d 00 20 04 43 04 41 04 41 04 3a 04 38 04 39 04&quot;

Loop parse, HexData, % A_Space
	{
	Txt .= Chr(&quot;0x&quot; A_LoopField)
	}
	
MsgBox % Txt</code></pre></div><p>Скажем, надо перевести все в читабельный текст ...</p>]]></description>
			<author><![CDATA[null@example.com (Mambr)]]></author>
			<pubDate>Wed, 21 Dec 2016 21:40:52 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=109991#p109991</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Перевод из hex в текст английский+русский]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=109990#p109990</link>
			<description><![CDATA[<div class="quotebox"><cite>MandarinKa02 пишет:</cite><blockquote><p>в ANSI нет поддержки русских символов.</p></blockquote></div><p>Чё это <a href="https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B4%D0%BE%D0%B2%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0#.D0.92_.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC.D0.B5_Microsoft_Windows">нет</a>?<br /></p><div class="quotebox"><cite>Mambr пишет:</cite><blockquote><p>Есть ли решение этого вопроса?</p></blockquote></div><p>Наверно, закодировать правильно нужно. Код символа получить так можно:<br /></p><div class="codebox"><pre><code>MsgBox, % Asc(&quot;Я&quot;)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Wed, 21 Dec 2016 21:24:14 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=109990#p109990</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Перевод из hex в текст английский+русский]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=109981#p109981</link>
			<description><![CDATA[<p>Насколько я знаю ASCII это фундамент ANSI, а в ANSI нет поддержки русских символов.</p>]]></description>
			<author><![CDATA[null@example.com (MandarinKa02)]]></author>
			<pubDate>Wed, 21 Dec 2016 19:46:51 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=109981#p109981</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Перевод из hex в текст английский+русский]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=109979#p109979</link>
			<description><![CDATA[<p>Добрый день!</p><p>Нужно сделать перевод из hex в текст, содержащий английские и русские слова.<br />Элементарный код дает на выхлопе кракозябры вместо русского, но английский идет нормально.</p><p>Пример строки hex-данных, содержащей английский и русский:<br /></p><div class="codebox"><pre><code>HexData =
(
31 00 2d 00 45 00 6e 00 67 00 6c 00 69 00 73 00 68 00 00 00 32 00 2d 00 20 04 43 04 41 04 41 04 3a 04 38 04 39 04 00 00 00 00
)

Loop parse, HexData, % A_Space
	{
	ASCII .= Chr(&quot;0x&quot; A_LoopField)
	}
	
MsgBox % ASCII</code></pre></div><p>Есть ли решение этого вопроса?</p>]]></description>
			<author><![CDATA[null@example.com (Mambr)]]></author>
			<pubDate>Wed, 21 Dec 2016 19:29:55 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=109979#p109979</guid>
		</item>
	</channel>
</rss>
