char型配列に格納されてる値を整数型値に変換するマクロ

unsigned char hoge[] = { 0x00, 0x00, 0x00, 0x01 };なんて配列があった時にCHAR_TO_INT32(hoge)のようにすると、unsigned intで1を返してくれるマクロを作ってみました。

// バイトスワップ関連
#define BS_BYTE1(x) (   (x)      & 0xFF )
#define BS_BYTE2(x) ( ( (x)>> 8 )& 0xFF )
#define BS_BYTE3(x) ( ( (x)>>16 )& 0xFF )
#define BS_BYTE4(x) ( ( (x)>>24 )& 0xFF )
 
#define BYTESWAP_INT16(x) ( (unsigned short)( (BS_BYTE1(x)<<8) | BS_BYTE2(x) ) )
#define BYTESWAP_INT32(x) ( BS_BYTE1(x)<<24 | BS_BYTE2(x)<<16 | BS_BYTE3(x)<<8 | BS_BYTE4(x) )
 
#ifdef ビッグエンディアン用
#define INT16_TO_LE(x) ( BYTESWAP_INT16(x) )
#define INT32_TO_LE(x) ( BYTESWAP_INT32(x) )
#define INT16_TO_BE(x) (x)
#define INT32_TO_BE(x) (x)
#endif
#ifdef リトルエンディアン用
#define INT16_TO_LE(x) (x)
#define INT32_TO_LE(x) (x)
#define INT16_TO_BE(x) ( BYTESWAP_INT16(x) )
#define INT32_TO_BE(x) ( BYTESWAP_INT32(x) )
#endif
 
// 2/4バイトのchar配列型ビッグ/リトルエンディアン値をshort/int値に変換する
#define BE_ARRAY_TO_INT16(x) (unsigned short)( INT16_TO_BE( *(unsigned short*)x ) )
#define BE_ARRAY_TO_INT32(x) (unsigned int)( INT32_TO_BE( *(unsigned int*)x )
#define LE_ARRAY_TO_INT16(x) (unsigned short)( INT16_TO_LE( *(unsigned short*)x ) )
#define LE_ARRAY_TO_INT32(x) (unsigned int)( INT32_TO_LE( *(unsigned int*)x ) )

ビッグエンディアン値用(BE_〜)とリトルエンディアン値用(LE_〜)があります。freadなどでchar配列に読み込んだ値を、整数値に変換するのに便利かなぁと。

処理の都合上、バイトスワップ用のマクロも入ってますが、気にしないで下さい。これらもどっかで使えると思います。

動作はMac OS X v10.4.10(gcc 4.0.1)でしか確認していません。VC++2005でも確認プログラムは作ったのですが「ランタイムがねーよ」と言われて実行できなかったので、そこでやる気を無くしました。

library nsfw ai character bots carts nsfw ai chat with photos free https://beauajsb86307.blog-gold.com/37345516/deep-nude-the-ethical-dilemmas-and-technological-impacts-of-ai-driven-image-manipulation nsfw ai chat бесплатно с безлимитом best free nsfw ai http://kramday.com/photos/profile.php?uid=87466 ariana grande nsfw chat ai ai nsfw hentai views ai girlfriend nsfw no sign up sexting ai girlfriend nsfw 18 ai generator nsfw futanari nsfw ai games character ai alternatives without nsfw

1 | | 2024-12-19 07:44 | reply



  • blog/2007/2007-10-17.txt
  • 最終更新: 2015-03-09 11:50
  • by Decomo