32位程序中一种转换Ipv6地址的方法

1 篇文章 0 订阅
1 篇文章 0 订阅

本文介绍了一种将char* 类型的Ipv6地址转换成BYTE(unsigned char)或者in6_addr类型的方法。

说明:使用时需要下载Ipv6++.lib和Ipv6++.dll(32位程序)

链接: https://pan.baidu.com/s/1C-dakhZRFbYBMp-wd4dcUw 密码: 5fcz

使用方法:

// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
//

#pragma once

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>



// TODO: 在此处引用程序需要的其他头文件

// ConsoleApplication5.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

//如果需要使用in6_addr类型需要包含以下头文件
#include "WINSOCK2.H"
#include "in6addr.h"

#pragma comment (lib,"Ipv6++")

extern "C" int Ipv6AddrStringToByte(const char *pAddrV6Str, unsigned char *pOut);

extern "C" int Ipv6AddrStringToIn6_addr(const char *pAddrV6Str, in6_addr *pOut);

int main()
{
	char *str = "2001:0DB8:0000:0023:0008:0800:200C:417A";
	unsigned char b[16] = { 0 };
	Ipv6AddrStringToByte(str, b);
	for (int i = 0; i < 15; i++)
	{
		printf("%02x-", b[i]);

	}
	printf("\n");
	in6_addr *p = new in6_addr();

	Ipv6AddrStringToIn6_addr(str, p);
	for (int i = 0; i < 15; i++)
	{
		printf("%02x-", p->u.Byte[i]);

	}
        delete p;
	getchar();
	return 0;
}

函数说明:Ipv6++.lib和Ipv6.dll由函数

NTSYSAPI

LONG

NTAPI
RtlIpv6StringToAddressW (
    _In_ PCWSTR S,
    _Out_ PCWSTR *Terminator,
    _Out_ struct in6_addr *Addr
    );
封装而来,使用方法见Main文件。
有问题可以评论联系作者交流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值