#include <iostream>
using namespace std;
int main(){
int x = 0x414243;
cout.write((char*)&x, 1);
cout.write(((char*)&x) + 1, 2);
}
出力は次のとおりです。char *はこの整数を16進数でどのように読み取るのですか? ostream :: write()でどのように動作していますか?
CBA
私は(のchar *)&は、xとやっていることを理解していません。
このASCIIテーブルを見るとhttp://www.asciitable.com/と書いてありますが、私はwrite()が141,142,143を8進数で書いているようです。
char *はこれをどうやって管理していますか?
https://stackoverflow.com/questions/22030657/little-endian-vs-big-endianの重複はありますか? –
'(char *)&x'はまずx('&x')のメモリ位置をとり、それをcharポインタ '(char *)(&x)'としてキャストします。 –
@FrançoisAndrieux 'endianness'これと関係がありません。 – Alberto