melpon日記 - HaskellもC++もまともに扱えないへたれのページ

2006-04-07

[][][]byte から int への変換 byte から int への変換を含むブックマーク

byte から int への変換を行う場合、Windows なら、

uint32 n = *(uint32*)&buf[ off ];

これだけで良いのだけれども、BREW の場合はメモリを 4 バイト単位でアクセスしなかった場合、かなりやばい動作をするので、

uint32 n1,n2,n3,n4;
n1 = buf[ off + 0 ];
n2 = buf[ off + 1 ];
n3 = buf[ off + 2 ];
n4 = buf[ off + 3 ];
uint32 n = (uint32)((n1 << 0) | (n2 << 8) | (n3 << 16) | (n4 << 24));

こうやって、バイト単位で計算してやる必要がある。


で、最近気が付いたんだけど、

uint32 n;
MEMCPY( &n , &buf[ off ] , sizeof( uint32 ) );

これでいいじゃん(;´Д`)

トラックバック - http://d.hatena.ne.jp/melpon/20060407/p1