我对NSString to Bytes转换有疑问。
我的问题是 我想从Bytes创建NSData。这里在下面的代码一切都很好,但代替combinedStr我必须传递int variables.i.e 0101,0102,...
我在名为combinedstring的变量中获取了字符串变量,如@“0101”,@“0102”.....如果我将combinedstring转换为int,那么它将给出名为101,102的值...但是我想要0101,0102 ......任何人都可以帮我解决这个问题。
NSData *valData = [NSData dataWithBytes:(Byte[]){254,1,200,0.5,combinedstring,0.4,1} length:7];
请记住combinedstring是一个String和变量。在combinedstring的位置,我们只能传递int值。
如果我的问题不明确,请告诉我
答案 0 :(得分:2)
您可以将NSString
的实例转换为NSData
的实例
-dataUsingEncoding:allowLossyConversion:
或-getCString:maxLength:encoding:(NSStringEncoding)encoding
的C数组。
在这两种情况下,你都有一个指向对象的指针。到char[]
。将该指针放入Byte
数组,将转换指针并复制其值,但不会复制引用的数据。
此外:在您的示例中,您尝试将0.4
(零 - 期 - 四)和0.5
(零 - 期 - 5)保存到Byte[]
。你可能期望这不会起作用。它会将值转换为类型Byte
的值(整数类型!)并存储该值。大于255的整数值也将被转换。
因此,您必须使用可变数据对象并单独连接不同类型的二进制表示。
一个例子:
NSData *stringData = [combinedString dataUsingEncoding:… allowLossyConversion:NO];
if (stringData == nil)
{
// error handling
}
NSMutableData *data = [NMutableData new];
Byte *byteArray;
float *floatArray;
// Adding byte data
byteArray = (Byte[]){254,1,200};
[data appendBytes:byteArray length:3*sizeof(Byte)]; // Adds 254, 1, 200
// Adding floating point data – Hopefully the receiver has the same floating point format.
floatArray = (float[]){0.5};
[data appendBytes:floatArray length:1*sizeof(float)]; // Adds 4! bytes representing the float value
// Adding string data – Hopefully the receiver uses the same string encoding
[data appendData:stringData]; // Adds the bytes for the string in the above encoding.