ifish/Ifish/ESPTouch/ESPTouAPI/Esptouchdata/ESP_ByteUtil.m

160 lines
3.9 KiB
Objective-C
Executable File

//
// ESP_ByteUtil.m
// EspTouchDemo
//
// Created by 白 桦 on 4/7/15.
// Copyright (c) 2015 白 桦. All rights reserved.
//
#import "ESP_ByteUtil.h"
@implementation ESP_ByteUtil
+ (Byte) convertUint8toByte:(char) uint8
{
return (Byte)uint8;
}
+ (UInt8) convertByte2Uint8:(Byte) b
{
return (UInt8) (b & 0xff);
}
+ (NSString *) convertByte2HexString:(Byte) b
{
UInt8 u8 = [self convertByte2Uint8:b];
return [NSString stringWithFormat:@"%x",u8];
}
+ (unsigned int)intFromHexString:(NSString *) hexStr
{
unsigned int hexInt = 0;
// Create scanner
NSScanner *scanner = [NSScanner scannerWithString:hexStr];
// Tell scanner to skip the # character
// [scanner setCharactersToBeSkipped:[NSCharacterSet characterSetWithCharactersInString:@"#"]];
// Scan hex value
[scanner scanHexInt:&hexInt];
return hexInt;
}
+ (NSData *) splitUint8To2Bytes: (UInt8) uint8
{
NSString *hexString = [NSString stringWithFormat:@"%x",uint8];
Byte low;
Byte high;
if (hexString.length > 1)
{
high = [self intFromHexString:[hexString substringWithRange:NSMakeRange(0, 1)]];
low =[self intFromHexString:[hexString substringWithRange:NSMakeRange(1, 1)]];
}
else
{
high = 0;
low = [self intFromHexString:[hexString substringWithRange:NSMakeRange(0, 1)]];
}
Byte bytes[] = { high, low };
NSData *data = [[NSData alloc] initWithBytes:bytes length:2];
return data;
}
+ (Byte) combine2bytesToOneWithHigh: (Byte) high andLow: (Byte) low
{
return (Byte) (high << 4 | low);
}
+ (UInt16) combine2bytesToU16WithHigh: (Byte) high andLow: (Byte) low
{
UInt8 highU8 = [self convertByte2Uint8:high];
UInt8 lowU8 = [self convertByte2Uint8:low];
return (highU8 << 8 | lowU8);
}
+ (Byte) randomByte
{
return arc4random() % 256;
}
+ (NSData *) randomBytes: (UInt8) len
{
Byte bytes[len];
for (int i = 0; i < len; i++) {
bytes[i] = [self randomByte];
}
NSData *data = [[NSData alloc]initWithBytes:bytes length:len];
return data;
}
+ (NSData *) genSpecBytesWithU16:(UInt16)len
{
Byte bytes[len];
for (int i = 0; i < len; i++) {
bytes[i] = '1';
}
NSData *data = [[NSData alloc]initWithBytes:bytes length:len];
return data;
}
+ (NSData *) genSpecBytesWithU8:(Byte) len
{
UInt8 u8 = [self convertByte2Uint8:len];
return [self genSpecBytesWithU16:u8];
}
+ (NSString *) parseBssid:(Byte[]) bssidBytes Offset: (int) offset Count: (int) count
{
Byte bytes[count];
for (int i = 0; i < count; i++ )
{
bytes[i] = bssidBytes[i + offset];
}
return [self parseBssid:bytes Len:count];
}
+ (NSString *) parseBssid:(Byte[]) bssidBytes Len:(int)len
{
NSMutableString *mStr = [[NSMutableString alloc]init];
int k;
NSString* hexK;
NSString* str;
for (int i = 0; i < len; i++)
{
k = 0xff & bssidBytes[i];
hexK = [NSString stringWithFormat:@"%x", k];
str = ((k < 16) ? ([NSString stringWithFormat:@"0%@",hexK ]) : (hexK));
[mStr appendString:str];
}
return mStr;
}
+ (NSData *) getBytesByNSString: (NSString *)string
{
NSUInteger numberOfBytes = [string lengthOfBytesUsingEncoding:ESPTOUCH_NSStringEncoding];
Byte bytes[numberOfBytes];
NSRange range = NSMakeRange(0, numberOfBytes);
[string getBytes:bytes maxLength:numberOfBytes usedLength:nil encoding:ESPTOUCH_NSStringEncoding options:0 range:range remainingRange:NULL];
NSData *data = [[NSData alloc]initWithBytes:bytes length:numberOfBytes];
return data;
}
+ (NSString *) getHexStringByData:(NSData *)data
{
NSMutableString* mStr = [[NSMutableString alloc]init];
NSUInteger totalLen = [data length];
Byte bytes[totalLen];
[data getBytes:&bytes length:totalLen];
for (int i = 0; i < totalLen; i++)
{
NSString *hexString = [[NSString alloc]initWithFormat:@"0x%.2x ",bytes[i]];
[mStr appendString:hexString];
}
return mStr;
}
@end