+ -
当前位置:首页 → 问答吧 → 如何转换为十六进制啊?

如何转换为十六进制啊?

时间:2010-12-06

来源:互联网

--------------------------------------------------------------------------------


大家好
   我有一个数组,char* v6addr[16]={20,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01};
现在我想把这个数组的值赋给另外一个16进制的数组,也就是IPv6的地址。
IPv6的地址格式为 struct in6_addr.s6_addr[16].而这个数组里面的值是十六进制,所以我用这个表达式赋值 in6_addr.s6_addr[i]=v6addr[i],可是赋值后,左边的结果都不是我要的值,可能是字符赋给十六进制的值的时候出问题了。
     有没有办法,可以实现让in6_addr.s6_addr[16]里面的值是={20,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01}啊,怎样才能直接让这些值被强行转换为十六进制,并且值的样式不会变化啊?帮帮忙

作者: wuwenhua   发布时间: 2010-12-06

你这个数组char* v6addr[16]是个指针数组,所以,存放里面的值的数值也得是指针数组,这点要注意。
至于转换成16进制,我的思路是将十进制数除以16,记录商不为0的次数和商为0时的余数将次数相加,转成16进制,最后加上余数。

是个笨方法,呵呵。

作者: shaohui973   发布时间: 2010-12-06

char v6addr[16]=....;
memcpy(in6_addr.s6_addr,v6addr,16);

作者: 流氓无产者   发布时间: 2010-12-06

热门下载

更多