我有一个短变量,我想在 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));
现在你可以理解其中的区别了。。
首先感谢baliman,经过一些更改后它对我有用
NSString *myStr = @"2";
char buf[2];
sprintf(buf, "%d", [myStr integerValue]);
char c = buf[0];
也许你可以这样做
char buf[2];
short num = 10;
sprintf(buf, "%d", num);
// buf[0] = '1'
// buf[1] = '0'
char c = buf[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;