iOS将短转换为长度为2的字节

时间:2012-11-20 10:11:42

标签: objective-c ios

我有一个短变量,我想在iOS中将其转换为2个字节

short num = 10;
char *bytes;

现在我想将此num值转换为字节

请帮帮我

4 个答案:

答案 0 :(得分:3)

可能是这样的     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));

现在你可以理解其中的差异......

答案 1 :(得分:1)

也许你可以这样做

char buf[2];
short num = 10;
sprintf(buf, "%d", num);

// buf[0] = '1'
// buf[1] = '0'
char c = buf[0];

约翰

答案 2 :(得分:1)

  

首先感谢 baliman ,经过一些更改后,它正在为我工​​作

NSString *myStr = @"2";

char buf[2];

sprintf(buf, "%d", [myStr integerValue]);

char c = buf[0];

答案 3 :(得分:0)

短和2字节是相同的,如果短是16位,所以你只需要输入任何你想要的东西..无论如何,如果你经常使用这个,你可以使用union:

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;