Я очень новичок в этом и пытаюсь использовать расширенные шестнадцатеричные коды (за исключением символов ascii из 127), которые генерируются путем преобразования десятичного числа в число с плавающей точкой, которое затем отправляется с помощью команды post на устройство для изменить заданное значение.
Я создаю шестнадцатеричные коды, просто делая это,
- (void)dec2float:(id)sender
{
NSString *dec = setPoint.text;
float flt = [dec floatValue];
unsigned char *bytes = (unsigned char *)&flt;
sPoint01 = [NSString stringWithFormat:@"%x", bytes[0]];
sPoint02 = [NSString stringWithFormat:@"%x", bytes[1]];
sPoint03 = [NSString stringWithFormat:@"%x", bytes[2]];
sPoint04 = [NSString stringWithFormat:@"%x", bytes[3]];
}
Если значение setPoint.text, например, 23, это составит
sPoint01 = 00
sPoint02 = 00
sPoint03 = b8
sPoint01 = 41
Эти значения затем должны быть отправлены на устройство в виде шестнадцатеричной строки, которая соединяется вместе, так что
NSString *post = [NSString stringWithFormat:@"\\x%@\\x%@\\x%@\\x%@",sPoint01, sPoint02, sPoint03, sPoint04];
но вместо "0000b841" я получаю "00005c78 62385c78 3431". Я предполагаю, что это потому, что XCode не будет позволять какой-либо шестнадцатеричный код после 127, как будто я пытаюсь ввести его так
@"\xb8"
Xcode сообщает мне, что «Преобразование ввода остановлено из-за входного байта, который не принадлежит входному набору кодов UTF-8».
Правильно ли я иду по этому пути или мне удалось пройти долгий путь по неправильному пути?
Любая помощь будет высоко ценится, и любые советы приветствуются.
Заранее спасибо
Edit:
Привет,
Спасибо за ответ. Это команда, которую я использую для отправки данных на контроллер. Надеюсь, это поможет,
- (void)setACStatus:(id)sender
{
NSString *post = [NSString stringWithFormat:@"\x38\x00\x00\x00\x76\x11\x01\x00%@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00%@\x00%@%@\x00\x10\x00\x10%@%@%@%@%@\x00\x00\x00",
unitNumberString, onOffString, modeString, modeString2, sPoint01, sPoint02, sPoint03, sPoint04,
fanSpeedString];
postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@”%d”, [postData count];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@”http://10.38.140.9/cmd/”]];//<-- Controller address.
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/octet-stream" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if( theConnection )
{
webData = [NSMutableData data];
}
else
{
NSLog (@"The Connection is NULL");
}
temp.text = [NSString stringWithFormat:@"%@",postData];
}
Thankyou.