Vc++代码翻译vb

kongxinBB 2009-05-08 12:21:28
冰天雪地,裸体跪求,各位大侠把下面这段VC++的翻译成VB代码,小弟不甚感激(小弟我到死也不会忘记你,做鬼也不会放过你)

/*
================================================================================
函数: int MxHexToAscii(unsigned char *hex,char * ascii,int nLength)
功能: 把nLength个字节逐个分解成2*nLength个可见字符。
高4位和低4位分别转换,直接加0x30。
参数:
返回值: 始终为0,表示成功。
================================================================================
*/
int MxHexToAscii(unsigned char *hex,char * ascii,int nLength)
{
int hiByte,loByte;
int i;
for ( i=0;i<nLength;i++)
{
hiByte=(hex[i]>>4)&0x0f;
loByte=hex[i]&0x0f;

ascii[i*2]=(char )(hiByte+48);

ascii[i*2+1]=(char)(loByte+48);

}

return 0;

}
/*
================================================================================
函数: int MxAsciiToHex(char * ascii,unsigned char * hex,int nLength)
功能: 把2*nLength个可见字符逐对合并成nLength个字节。
输入的可见字符要求在0x30和0x3F之间。
参数:
返回值: 0:成功;
-1:数据非法
================================================================================
*/
int MxAsciiToHex(char * ascii,unsigned char * hex,int nLength)
{

int hiByte,loByte;
int i;

for ( i=0;i<nLength;i++)
{
hiByte=ascii[i*2]-48;
if (hiByte<0 || hiByte>15)
return -1;
loByte=ascii[i*2+1]-48;
if (loByte<0 || loByte>15)
return -1;
hex[i]=(unsigned char)(hiByte*16+loByte);
}
return 0;

}
MxHexToAscii(iMyMb,mbchar,256);//把模板数据转从二进制转换到字符串,方便存储
mbchar[512]=0;//加结束符号
mbstr=mbchar;
...全文
153 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sonic_andy 2009-05-10
  • 打赏
  • 举报
回复
简单高效=>简单快速
sonic_andy 2009-05-10
  • 打赏
  • 举报
回复
也可以:
1 导出为第一代DLL(无类层次结构的API),用STDCALL声明.(不推荐)
2 用VC的ATL做成VB可以调用的包含类层次模型的ActiveX组件.(推荐)

这样VC和VB就可以发挥各自的优势了(VC效率高可加密,VB编写简单高效).
kongxinBB 2009-05-10
  • 打赏
  • 举报
回复
谢谢各位啦,人人有分了
zzyong00 2009-05-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 kongxinBB 的帖子:]
冰天雪地,裸体跪求,各位大侠把下面这段VC++的翻译成VB代码,小弟不甚感激(小弟我到死也不会忘记你,做鬼也不会放过你)
[/Quote]
现在是什么季节?
cnzdgs 2009-05-10
  • 打赏
  • 举报
回复
哪行看不懂或者哪里不会?
lyserver 2009-05-09
  • 打赏
  • 举报
回复
你不是都翻译了吗?
kongxinBB 2009-05-09
  • 打赏
  • 举报
回复
没人回复,自己来吧
Public Function MxAsciiToHex(ByRef astrAscii As String, ByRef HexBytes() As Byte) As Integer
On Error GoTo myerr:
Dim lngLen As Long
Dim intI As Integer, hiByte As Integer, loByte As Integer
MxAsciiToHex = 0
intI = 1
lngLen = Len(astrAscii)
ReDim HexBytes(Int(lngLen / 2) - 1)
Do While intI <= lngLen
hiByte = Asc(Mid$(astrAscii, intI, 1)) - 48
If hiByte < 0 Or hiByte > 15 Then
MxAsciiToHex = -1
Exit Do
End If
intI = intI + 1
loByte = Asc(Mid$(astrAscii, intI, 1)) - 48
If loByte < 0 Or loByte > 15 Then
MxAsciiToHex = -1
Exit Do
End If
HexBytes(Int(intI / 2) - 1) = (hiByte * 16 + loByte)
intI = intI + 1
Loop
myerr:
If Err.Number <> 0 Then Err.Clear
End Function

Public Function MxHexToAscii(ByRef HexBytes() As Byte, ByRef astrAscii As String) As Integer
On Error GoTo myerr:
Dim lngUBound As Long
Dim intI As Integer, hiByte As Integer, loByte As Integer
lngUBound = UBound(HexBytes)
astrAscii = String(3 * lngUBound, Chr(0))
For intI = LBound(HexBytes) To lngUBound
loByte = (HexBytes(intI) And &HF)
hiByte = (HexBytes(intI) And &HF0) / 16
Mid(astrAscii, InStr(astrAscii, Chr(0)), 1) = Chr$(hiByte + 48)
Mid(astrAscii, InStr(astrAscii, Chr(0)), 1) = Chr$(loByte + 48)

Next
astrAscii = Left(astrAscii, InStr(astrAscii, Chr(0)) - 1)
MxHexToAscii = 0
myerr:
If Err.Number <> 0 Then Err.Clear
End Function
内容概要:本文围绕“新型电力系统下多分布式电源接入配电网承载力评估方法”的研究,系统性地介绍了基于Matlab的仿真建模与代码实现方案,旨在评估高比例分布式电源(如光伏、风电等)接入背景下配电网的接纳能力。研究融合了智能优化算法(如蜣螂优化、灰狼优化、遗传算法)、多目标优化、鲁棒优化及双层优化模型,结合潮流计算、稳定性分析与故障仿真,构建了完整的承载力评估体系。文档不仅提供核心算法实现,还拓展至微电网调度、储能配置、电氢耦合系统、电动汽车协同等前沿方向,强调“复现+创新”相结合的科研路径,助力研究者快速掌握高水平论文复现技巧并激发原创思路。; 适合人群:具备电力系统、自动化或相关专业背景,熟悉Matlab/Simulink仿真环境,正在从事科研或工程应用的研究生及初级科研人员(工作1-3年);; 使用场景及目标:①复现高水平期刊中关于配电网承载力的优化模型;②开展高比例可再生能源接入下的配电网规划与运行研究;③学习并应用智能优化算法解决复杂电力系统问题;④获取完整科研资源包以加速课题进展与论文撰写; 阅读建议:建议读者关注公众号“荔枝科研社”获取网盘资源,下载全套代码与模型文件,按照文档结构循序渐进学习,重点理解算法设计逻辑与仿真建模细节,结合所提供的复现案例深化对优化模型与工程应用场景的理解,提升科研效率与创新能力。

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧