teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

説明を追加

2019/11/10 11:37

投稿

Bull
Bull

スコア986

answer CHANGED
@@ -1,4 +1,7 @@
1
1
  プロジェクトの文字コードが Unicode であれば、`LPTSTR` は `wchar_t *` なので、メモリに 0xfe 0xff 0x30 0xc6 と読み込まれていれば、`lpUniText[1]`は 0xc630 になります。
2
2
  読み込んだデータがビックエンディアンでも Windows マシンの CPU は リトルエンディアンなので、デバッガーではそのように表示されますね。
3
+ 「テ」は`UTF-16`では 0x30c6 ですが、これをメモリーに格納すると、リトルエンディアンの CPU では 0xc6 0x30 となります。メモリに 0x30 0xc6 と格納されていれば、0xc630 という文字になります。
3
4
 
5
+ デバッガはメモリに読み込まれているデータがビッグエンディアンなんてことはわかりませんから、全てリトルエンディアンのデータとして扱います。
6
+
4
7
  C言語の標準関数ではありませんが、VC ならば `_byteswap_ushort`関数を使えばバイトスワップができます。

2

誤字修正

2019/11/10 11:37

投稿

Bull
Bull

スコア986

answer CHANGED
@@ -1,4 +1,4 @@
1
- プロジェクトの文字コード Unicode であれば、`LPTSTR` は `wchar_t *` なので、メモリに 0xfe 0xff 0x30 0xc6 と読み込まれていれば、`lpUniText[1]`は 0xc630 になります。
1
+ プロジェクトの文字コード Unicode であれば、`LPTSTR` は `wchar_t *` なので、メモリに 0xfe 0xff 0x30 0xc6 と読み込まれていれば、`lpUniText[1]`は 0xc630 になります。
2
2
  読み込んだデータがビックエンディアンでも Windows マシンの CPU は リトルエンディアンなので、デバッガーではそのように表示されますね。
3
3
 
4
4
  C言語の標準関数ではありませんが、VC ならば `_byteswap_ushort`関数を使えばバイトスワップができます。

1

誤記修正

2019/11/10 11:28

投稿

Bull
Bull

スコア986

answer CHANGED
@@ -1,5 +1,4 @@
1
- プロジェクトの文字コードは Unicode でしょうか。
2
- `LPTSTR` は `wchar_t *` なので、メモリに 0xfe 0xff 0x30 0xc6 と読み込まれていれば、`lpUniText[1]`は 0xc630 になります。
1
+ プロジェクトの文字コードは Unicode であれば、`LPTSTR` は `wchar_t *` なので、メモリに 0xfe 0xff 0x30 0xc6 と読み込まれていれば、`lpUniText[1]`は 0xc630 になります。
3
2
  読み込んだデータがビックエンディアンでも Windows マシンの CPU は リトルエンディアンなので、デバッガーではそのように表示されますね。
4
3
 
5
4
  C言語の標準関数ではありませんが、VC ならば `_byteswap_ushort`関数を使えばバイトスワップができます。