【转】iOS中16进制转10进制

原文网址:http://www.voidcn.com/blog/u012198553/article/p-4976772.html

/// 将十六进制的字符串转化为NSData 
- (NSData )transStrHexToData:(NSString )strHex 

/// bytes索引 
NSUInteger j = 0;

NSInteger len = strHex.length;

if (len % 2 == 1) {
    /// 若不能被2整除则说明16进制的字符串不满足图片图。特此说明,假如只是单纯的把十六进制转换为NSData就把这个if干掉即可,
    return nil;
}

/// 动态分配内存
Byte *bytes = (Byte *)malloc((len / 2 + 1) * sizeof(Byte));

/// 初始化内存 其中memset的作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法
memset(bytes, ‘\0‘, (len / 2 + 1) * sizeof(Byte));

/// for循环里面其实就是把16进制的字符串转化为字节数组的过程
for (NSUInteger i = 0; i < strHex.length; i += 2) {

    /// 一字节byte是8位(比特)bit 一位就代表一个0或者1(即二进制) 每8位(bit)组成一个字节(Byte) 所以每一次取2为字符组合成一个字节 其实就是2个16进制的字符其实就是8位(bit)即一个字节byte
    NSString *str = [strHex substringWithRange:NSMakeRange(i, 2)];

    /// 将16进制字符串转化为十进制
    unsigned long uint_ch = strtoul([str UTF8String], 0, 16);

    bytes[j] = uint_ch;

    /// 自增
    j ++;
}
/// 将字节数组转化为NSData
NSData *data = [[NSData alloc] initWithBytes:bytes length:len / 2];

/// 释放内存
free(bytes);

return data;

}

时间: 2024-10-19 00:55:17

【转】iOS中16进制转10进制的相关文章

16进制与10进制

16进制 0 1 2 3 4 5 6 7 8 9 a b c d e f. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 0 1 2(16进制中的10 进制表象,进位后,前边一位)10进制 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20我们的计算机中一般都以16进制保存.我们用的时间就是这种60进制中的10进制表象.

2进制,10进制,16进制,补码和移位

逢二进一,逢十进一,十六进制 10110101(2) = 128+32+16+4+1 = 181(10) b 5(16) = b*16+5 = 11*16+5 = 181(10) 2进制 int n = 45; System.out.println(Integer.toBinaryString(n)); 计算机的内部(Java)只有2进制数据, 在显示的时候编程语言提供API将2进制转换为10进制显示出来. 计算机只能处理2进制数据, 利用编程语言提供的算法支持了10进制 Java中用于支持2进

java 16进制转换10进制

public static String toHexString2(byte[] b) { StringBuffer buffer = new StringBuffer(); for (int i = 0; i < b.length; ++i) { buffer.append(toHexString2(b[i])); } return buffer.toString(); } public static String toHexString2(byte b) { char[] buffer =

Java 10进制转2、8、16进制转换 / 2、8、16进制转10进制转换

public static void main(String[] args) { int i = 10; System.out.println("***********10进制转换2进制.8进制.16进制************"); System.out.println(Integer.toBinaryString(i)); // 10转换2进制 System.out.println(Integer.toOctalString(i)); // 10转换8进制 System.out.p

PHP进制转换[实现2、8、16、36、64进制至10进制相互转换]

自己写了一个PHP进制转换程序,一个类吧,第一次写这个东东,写这个东东,在处理文本文件时能用得到. 可以实现: 10进制转换2.8.16.36.62进制2.8.16.36.62进制转换10进制 有点要注意下,2.8.16进制转换时,使用的是系统的自己的函数. 所以,不管怎么高精度转换值可能大于2147483646. 另外, 32进制低精转换,最大值:2147483646: 32进制高精转换,最大值:77309411327: 64进制高精转换,最大值:133143986175. jinzhi.ph

10进制转16进制,16进制转10进制,随机出一个6位十六进制颜色值

方案一: var num16 = "ffffff";var num10 = parseInt(num16,16);//16进制转10进制console.log(num10) // 16777215 var colorNum = Math.round(Math.random()*num10).toString(16);colorNum = ("000000"+colorNum).slice(-6)console.log("#"+colorNum)

Delphi XE2 16进制转10进制《LceMeaning》

以下在编写IC卡项目时出现卡号转换错误时的解决方法,在XE2下测试正常.================================================ uses math; function HexToDec(Hex : string) : string; var i : integer; res : real; len : integer; begin len := length(Trim(Hex)); for i := 1 to len do begin case Hex[

16进制转10进制和2进制

/** * 16进制转10进制 * * @param str * @return */ public static String sixteenToTen(String str) { int ten = Integer.parseInt(str, 16); String result = String.valueOf(ten); return result; } /** * 16进制转2进制 * @param str * @return */ public static String hexSt

2进制,8进制,16进制转10进制的自定义函数

1.2进制转10进制自定义函数: function DecToInt(temp:string):integer; //2进制转10进制var  i,j  : Integer;begin  result := 0;  j   := Length(temp);  //取得字符串长度:  for I := 0 to Length(temp)-1 do  begin    result := result+strtoint(Copy(temp,j,1))*Trunc(power(2,I));  //Tr

第一个python小程序,2进制转10进制

#Bin to Dec #my first python programe n = c = itm = 0 a = raw_input('please input Binary number:\n') for n in range(0,len(a)):    b = a[n:n+1] #   print 'n is', n #   print 'b is',b #   print 'len',len(a[n:])       if b == '1':    c = 2**(len(a[n:])-