読者です 読者をやめる 読者になる 読者になる

エンディアン変換とchar4個からlongへの変換

Rap C

UNIXには便利なエンディアン変換関数がついていた!
全然知らなかったのですが、

man byteorder

すると出てきます。

#include<netinet/in.h>

int main(void){
	unsigned long a=0x10203040;
	unsigned char e[4]={0x10,0x20,0x30,0x40};
	unsigned long b,c,d;
	b=ntohl(a);
	memcpy(&c,e,4);
	printf("a:%08X\n",a);
	printf("b:%08X\n",b);
	printf("c:%08X\n",c);
	return(0);
}

実行結果は

a:10203040
b:40302010
c:40302010

Cってメモリの番地をあたえて、そこに流し込むだけで
コピーができるんだったね。うーん。ローレベルな言語です。