美文网首页
十进制数字转十六进制,固定长度

十进制数字转十六进制,固定长度

作者: smallLabel | 来源:发表于2020-09-27 17:16 被阅读0次

    区分大小端模式
    以数字1举例,在小端模式下,转换成16进制为0x0100,可以看出01在前,那么在大端模式下就是0x0001。

    小端模式

    // Objective-C
    + (NSData *)convertToHexStringWithNum:(int)num length:(int)length {
        // 低位在前
        Byte *byteData = malloc(length * sizeof(Byte));
        for (int i = 0; i < length; i++) {
            byteData[i] = (Byte)((num & (0x000000FF << (i * 8))) >> (i * 8));
        }
        NSMutableData *data = [[NSMutableData alloc] initWithBytes:byteData length:length];
        free(byteData);
    //    NSData *data = [NSData dataWithBytes:&num length:length];
        return  data;
    }
    

    大端模式

    + (NSData *)convertToBigHexStringWithNum:(int)num length:(int)length {
        Byte *byteData = malloc(length * sizeof(Byte));
        for (int i = 0; i < length; i++) {
            byteData[i] = (Byte)(num >> ((length - i - 1) * 8) & 0xFF);
        }
        NSMutableData *data = [[NSMutableData alloc] initWithBytes:byteData length:length];
        free(byteData);
        //    NSData *data = [NSData dataWithBytes:&num length:length];
        return  data;
    }
    

    相关文章

      网友评论

          本文标题:十进制数字转十六进制,固定长度

          本文链接:https://www.haomeiwen.com/subject/aevkuktx.html