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

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

作者: 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