將字符串轉爲16進制字符串並顯示出來

將字符串轉爲16進制字符串並顯示出來

// - 發送的字節
5d0000005d000000b1020000xxxxxxx00
5d000000 : 發送內容長度 (內容長度 = (5d000000 內容長度 4字節) + (b1020000 版本信息長度 4字節)  (xxxxxxx)的長度 + (00 消息尾 1字節)  )
5d000000 : 發送的內容長度 (內容長度 = (5d000000 內容長度 4字節) + (b1020000 版本信息長度 4字節)  (xxxxxxx)的長度 + (00 消息尾 1字節)  )
b1020000 : 版本信息字符 (b1020000 4字節)
xxxxxxx : 發送的內容;
00 : 尾部的固定字符

// - 字符串轉data
NSData *data = [self.msgContent dataUsingEncoding:NSUTF8StringEncoding];
NSMutableString *content = [NSMutableString string];

// - 裏邊的固定字符
char tail = 0x00;
int version = 0x000002b1;
int length = (int)(sizeof(length) +  sizeof(version) + data.length + sizeof(tail));

// - 字節序轉換
tail = CFSwapInt32(tail);
version = CFSwapInt32(version);
length = CFSwapInt32(length);

// - 將數字拼接到字符串中(以16進制的形式, %08x 的作用是如果數字爲 0x08, 就改爲 0x00000008)
NSString *header = [NSString stringWithFormat:@"%08x%08x%08x", length, length, version];

// - 將bytes中的每個字符拼接到字符串中(以16進制的形式, %08x 的作用是如果數字爲 0x08, 就改爲 0x00000008)
for (int i = 0; i < data.length; i++) {
    char va = *(char *)(data.bytes + i);
    [content appendFormat:@"%x", va];
}
// - 拼接結果字符串
NSString *result = [NSString stringWithFormat:@"%@%@%02x", header, content, tail];
return result;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章