エンディアン変換

あけましておめでとうございます

年が明けてからなんとなくplyファイルのローダを書いていたんですが,バイナリファイルのエンディアン変換でちょっと躓いたので覚え書き
そもそもエンディアンがビット単位で逆転するものと勘違いしていたのが躓いた原因で,実際はバイト単位で逆転しているんですね
エンディアン変換のコードは以下の様な感じで書いてみました

template<typename T>
T convertEndian( T src ){
	const size_t size = sizeof( T );
	T dst;
	char* srcPtr = reinterpret_cast<char*>( &src );
	char* dstPtr = reinterpret_cast<char*>( &dst );
	for( int i=0; i<size; i++ ){
		dstPtr[i] = srcPtr[size - 1 - i];
	}
	return dst;
}

本当はへび年に合わせた適当なモデルをレンダリングして上げたかったのですが,ヤル気がでなかったのでやめました

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください