短い変数があり、iOSで2バイトに変換したい
short num = 10;
char *bytes;
このnum値をバイトに変換したい
私を助けてください
次のようになりますchar*bytes = malloc(sizeof(char)* 2);
bytes[0] = (char)(num & 0xff);
bytes[1] = (char)((num >> 8) & 0xff);
編集:以下のすべてのコメントの後..
char * bytes = malloc(sizeof(char) * 3);
bytes[0] = (char)(num & 0xff);
bytes[1] = (char)((num >> 8) & 0xff);
bytes[2] = '\0' ; // null termination
printf("strlen %d", strlen(bytes));
printf("sizeof %d", sizeof(bytes));
今、あなたは違いを理解することができます。
多分あなたはこのようにそれをすることができます
char buf[2];
short num = 10;
sprintf(buf, "%d", num);
// buf[0] = '1'
// buf[1] = '0'
char c = buf[0];
ヨハン
まず第一にバリマンのおかげで、それはいくつかの変更の後に私のために働いています
NSString *myStr = @"2";
char buf[2];
sprintf(buf, "%d", [myStr integerValue]);
char c = buf[0];
ショートと2バイトは、ショートが16ビットの場合と同じです。したがって、必要なのは、必要なものに型キャストすることだけです。とにかく、これを頻繁に使用する場合は、ユニオンを使用できます。
union ShortByteContainer {
short shortValue;
char byteValue[2];
};
これを使用すると、ショートからバイト、またはその逆に移行できます。
ShortByteContainer value;
value.shortValue = 13;
char byteVal1 = value.byteValue[0];
char byteVal2 = value.byteValue[1];
value.byteValue[0] = 1;
value.byteValue[1] = 2;
short shortVal = value.shortValue;