0

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

short num = 10;
char *bytes;

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

请帮我

4

4 回答 4

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));

现在你可以理解其中的区别了。。

于 2012-11-20T10:16:52.633 回答
1

首先感谢baliman,经过一些更改后它对我有用

NSString *myStr = @"2";

char buf[2];

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

char c = buf[0];
于 2013-06-27T06:57:59.107 回答
1

也许你可以这样做

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

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

约翰

于 2012-11-20T10:18:50.623 回答
0

如果 short 是 16 位,那么 Short 和 2 个字节是一样的,所以您只需将其类型转换为您想要的任何内容。无论如何,如果您经常使用它,您可以使用 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;
于 2012-11-20T10:41:11.823 回答