數(shù)據(jù)流的16進(jìn)制高效編碼

16進(jìn)制編碼,轉(zhuǎn)成字符串
+ (NSString *)hexStringForData:(NSData *)data {
    static const u_char HexCharMap[] = "0123456789abcdef";
    Byte* bytes = (Byte*) [self bytes];
    Byte* bytesHex = (Byte*) malloc([self length]*2);
    for (NSUInteger i = 0, j = 0; i < [self length]; i++, j+=2) {
        bytesHex[j+1] = HexCharMap[ bytes[i] & 0x0f ];
        bytesHex[j  ] = HexCharMap[(bytes[i] & 0xf0) >> 4];
    }
    return [[NSString alloc] initWithBytesNoCopy:bytesHex length:[self length]*2 encoding:(NSASCIIStringEncoding) freeWhenDone:YES];
}
16進(jìn)制編碼逆過程
+ (NSData *)dataFromHexString:(NSString *)hexString {
    NSUInteger size = [hexString length] / 2;
    Byte* result = (Byte*) malloc(size);
    bzero(result, size);
    const char * cstring = [hexString cStringUsingEncoding:NSUTF8StringEncoding];
    for (int i = 0, j = 0; i < size; i++, j += 2) {
        result[i] = (Byte) ((digittoint(cstring[j]) << 4)  | digittoint(cstring[j+1]));
    }
    
    return [NSData dataWithBytesNoCopy: result length:size freeWhenDone:YES];
}

總結(jié)

無意中搜到了C函數(shù) digittoint,已經(jīng)可以把16進(jìn)制字符轉(zhuǎn)成數(shù)值,所以欣喜之余,發(fā)現(xiàn)可以拋棄網(wǎng)上的NSScaner方案(不斷構(gòu)造新scanner來解析)。如果剛好你看到,覺得有用,那就留個(gè)贊。:)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 編碼問題一直困擾著開發(fā)人員,尤其在 Java 中更加明顯,因?yàn)?Java 是跨平臺(tái)語言,不同平臺(tái)之間編碼之間的切換...
    x360閱讀 2,581評(píng)論 1 20
  • 為什么要編碼 不知道大家有沒有想過一個(gè)問題,那就是為什么要編碼?我們能不能不編碼?要回答這個(gè)問題必須要回到計(jì)算機(jī)是...
    艾小天兒閱讀 17,889評(píng)論 0 2
  • 很多人總把心里美好的愿望自以為真,就比如我們所知的"一別兩寬,各生歡喜"。其實(shí)在一起的所走過的路上,但凡有過真...
    b919530e3bc6閱讀 323評(píng)論 0 0
  • 孔空回到山上,看著孩子們嗷嗷待哺的眼神,心里頓生出許多悲涼。這萬物天地啊,竟然讓自己到了這般走投無路的田地。他做了...
    三更笙閱讀 239評(píng)論 0 1
  • 關(guān)于堅(jiān)持!有一段白眼狼太多,也懶得寫到各處!友人鼎力才安撫我那小情緒! 很多人以為我堅(jiān)持了就這一年光景! 這才是九...
    縱情嬉戲天地間閱讀 241評(píng)論 7 0

友情鏈接更多精彩內(nèi)容