HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具

公文一键排版系统基本完成,准备继续完善SysInfo,增加用户帐户信息,其中涉及到Win32_Account结构,其C++定义如下:

[Dynamic, Provider("CIMWin32"), UUID("{8502C4CC-5FBB-11D2-AAC1-006008C78BC7}"), AMENDMENT]
class Win32_UserAccount : Win32_Account
{
uint32 AccountType;
string Caption;
string Description;
boolean Disabled;
string Domain;
string FullName;
datetime InstallDate;
boolean LocalAccount;
boolean Lockout;
string Name;
boolean PasswordChangeable;
boolean PasswordExpires;
boolean PasswordRequired;
string SID;
uint8 SIDType;
string Status;
};

 由于WMI使用的是UniCode(WCHAR),所以我们在MASM32中要将以上成员属性AccountType、Caption……按DW UniCode(WCHAR)来定义,如下:

AccountType dw 'A','c','c','o','u','n','t','T','y','p','e', 0, 0
Caption dw 'C','a','p','t','i','o','n', 0, 0
Description dw 'D','e','s','c','r','i','p','t','i','o','n', 0, 0
Disabled dw 'D','i','s','a','b','l','e','d', 0, 0
Domain dw 'D','o','m','a','i','n', 0, 0
FullName dw 'F','u','l','l','N','a','m','e', 0, 0
InstallDate dw 'I','n','s','t','a','l','l','D','a','t','e', 0, 0
LocalAccount dw 'L','o','c','a','l','A','c','c','o','u','n','t', 0, 0
Lockout dw 'L','o','c','k','o','u','t', 0, 0
Name dw 'N','a','m','e', 0, 0
PasswordChangeable dw 'P','a','s','s','w','o','r','d','C','h','a','n','g','e','a','b','l','e', 0, 0
PasswordExpires dw 'P','a','s','s','w','o','r','d','E','x','p','i','r','e','s', 0, 0
PasswordRequired dw 'P','a','s','s','w','o','r','d','R','e','q','u','i','r','e','d', 0, 0
SID dw 'S','I','D', 0, 0
SIDType dw 'S','I','D','T','y','p','e', 0, 0
Status dw 'S','t','a','t','u','s', 0, 0

虽然MASM32 在QEDITOR 的 Conversions里提供了Text to DW UNICODE菜单项功能,但这个菜单项还不能实现自动从类中提出成员属性名称并转换为MASM32的DW UNICODE字符串的格式,所以我们还是先得手工将AccountType、Caption……提取出来。

成员少还行,成员多的话就太麻烦了。

于是用HTML+JavaScript写了一个简单的转换工具,运行效果如下:

 

完整代码如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus®"><meta name="Author" content="PurpleEndurer"><meta name="Keywords" content=""><meta name="Description" content=""><title>ANSI String 2 MASM32 DW UniCode String</title></head><body><table>
<caption><P style="color:purple;font:18pt bold;">ANSI String 2 MASM32 DW UniCode String&nbsp;&nbsp;<input type="button" value="转换" onclick="tran()"></P>
</caption><tr><td><P align="center">ANSI 字符串</P></td><td><P align="center">MASM32 DW UniCode String</P></td>
</tr>
<tr><td><textarea id="taAnsi" rows="50" cols="40" align="left">
uint32 AccountType;
string Caption;
string Description;
boolean Disabled;
string Domain;
string FullName;
datetime InstallDate;
boolean LocalAccount;
boolean Lockout;
string Name;
boolean PasswordChangeable;
boolean PasswordExpires;
boolean PasswordRequired;
string SID;
uint8 SIDType;
string Status;		</textarea>     		</td><td><textarea id="taUni" rows="50" cols="90"></textarea></td>
</tr>
</table><script>//功能:删除字符串中的所有空格
//记录:20230726创建
String.prototype.eliminateSpace = function()
{return this.replace(/\s*/g,"");
}//去除首尾空格
String.prototype.trim = function() 
{return this.replace(/(^\s*)|(\s*$)/g, ""); /*var t = this.replace(/(^\s*)|(\s*$)/g, ""); return t =t.replace(/(^&nbsp;*)|(&nbsp*$)/g, ""); */
} //功能:将ANSI字符串转换成MASM32 Unicode字符串//记录:20230811建//输入:s=ANSI字符串//输出:MASM32 DW Unicode字符串function ansiStr2UniStr(s){var r = s.split('');//document.write(r+"<br>"); return " dw '" + r.join("','") + "', 0, 0";}//ansiStr2UniStr(s)function getItem(a)
{var s = a.split(' ');var j = 0;while (j < s.length){if (''==s[j].eliminateSpace()){s.pop();}else{j++;}}//whilereturn s;
} //getItem(a)var taAnsi = document.getElementById('taAnsi');
var taUni = document.getElementById('taUni');function tran()
{var a = taAnsi.value.replace('\t',' ').split('\n');for (var i = 0; i < a.length; i++){a[i] = a[i].trim();if (';'==a[i][a[i].length-1]){a[i]=a[i].substr(0,a[i].length-1);}a[i] = getItem(a[i]);if (1< a[i].length){taUni.value += a[i][1] + ansiStr2UniStr(a[i][1]) + "\n";			}}//for
}//tran()</script></body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1380616.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

分享给大家一个免费使用网络字体的方法

如题&#xff0c;给各位朋友分享一个免费使用字体的方法&#xff0c;因为现在网上的字体大部分都需要付费使用&#xff0c;而我们有时候只需要字体中的一两个字&#xff0c;如果为这一两个字花十几块&#xff0c;还是有点肉疼的&#xff0c;尊重版权的另说&#xff1b; 好了&a…

质心计算公式

求曲线质心&#xff1a; 对于曲线L&#xff0c;设密度公式为F(x,y)&#xff0c;则质心公式为 这是求质心的x坐标&#xff0c;求另外一个坐标类似。同时&#xff0c;这个公式可以推广到多元函数求积分&#xff0c;原理依然是要求的坐标乘以密度公式积分除以密度公式做积分 求区…

能量信号和功率信号

能量信号为功率信号的积分&#xff0c;功率信号为能量信号的密度。对于一个信号&#xff0c;yf(x)&#xff0c;能量相当于曲线和x轴的积分面积&#xff0c;功率相当于y值。当一个信号的积分面积无穷大&#xff0c;但是能找到一个不是无穷大的平均y值&#xff0c;那么这就是功率…

信号能量、功率、功率谱密度、自相关函数公式总结

已知时域求能量与功率 若 x(t) 为能量讯号&#xff0c;其总能量&#xff1a; 若 x(t) 为功率信号&#xff0c;其平均功率&#xff1a; 若 x(t) 为周期信号且基本周期为 &#xff0c;其平均功率&#xff1a; 已知频域求能量 (1)由时域求能量&#xff1a; (2)根据傅立叶逆转…

瞬时功率与有功功率计算公式

一 基本概念 瞬时功率是指某一时刻电压与电流的乘积&#xff0c;记瞬时电压为u(t)&#xff0c;瞬时电流为i(t)&#xff0c;瞬时功率为p(t)&#xff0c;则&#xff1a;   瞬时功率计算公式 在交流电路中&#xff0c;有功功率是指一个周期内发出或负载消耗的瞬时功率的积分的…

关于光伏发电量计算公式疑问

GB50797&#xff0d;2012&#xff0c;光伏发电站设计规范中&#xff0c;对于“ E s E_s Es​——标准条件下的辐照度”的描述&#xff0c;在2.2.1章节中和6.6.2章节中表述不一致。 百度百科上辐照度的概念是&#xff1a; 辐射照度又称辐照度&#xff0c;是受照面单位面积上的辐…

能量估计

能量估计 设 ( x 0 , t 0 ) (x_0,t_0) (x0​,t0​) 为上半平面 Q Q Q 内任意点&#xff0c;通过这点向下做两条特征线 x x 0 a ( t 0 − t ) xx_0\pm a(t_0-t) xx0​a(t0​−t) &#xff0c;这两条特征线与 x x x 轴围成的三角形区域称为以 ( x 0 , t 0 ) (x_0,t_0) (x…

功率谱密度(功率信号)、能量谱密度(能量信号)详解

一、能量信号和功率信号 根据信号可以用能量式或功率式表示可分为能量信号和功率信号。 能量信号&#xff0c;如各类瞬变信号。 在非电量测量中&#xff0c;常将被测信号转换为电压或电流信号来处理。显然&#xff0c;电压信号加在单位电阻&#xff08;R1时&#xff09;上的瞬时…

图像熵的计算公式

【关联文章】&#xff1a;信息熵的数值计算公式_多元信息熵计算_Dust_Evc的博客-CSDN博客 图像熵&#xff08;image entropy&#xff09;是图像“繁忙”程度的估计值。 图像熵表示为图像灰度级集合的比特平均数&#xff0c;单位比特/像素&#xff0c;也描述了图像信源的平均信息…

第二章第十题(科学:计算能量)(Science: calculating energy)

2.10&#xff08;科学&#xff1a;计算能量&#xff09;编写程序&#xff0c;计算将水从初始温度加热到最终温度所需的能量。程序应该提示用户输入水的重量&#xff08;以千克为单位&#xff09;&#xff0c;以及水的初始温度和最终温度。 计算能量的公式是&#xff1a;Q M …

日常BUG —— Java判空注解

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;日常BUG、BUG、问题分析☀️每日 一言 &#xff1a;存在错误说明你在进步&#xff01; 一. 问题描述 问题一&#xff1a; 在使用Java自带的注解NotNull、NotEmpty、NotBlank时报错&#xff0c;…

户外组网摆脱布线困扰,工业5G网关实现无人值守、远程实时监控

在物联网通信技术发达的2023&#xff0c;网络覆盖对所及之处的全面覆盖&#xff0c;科技发展的促使下很多高危户外场景也在思考如何利用无线技术提高人员安全及现场无人化管理。 煤矿是我们国家不可缺少的重要能源&#xff0c;其开采过程的危险系数也是众所皆知的&#xff0c;…

五子棋天人合一对局

五子棋使用了四子绝对双杀&#xff0c;打败了最高难度电脑《天人合一》。

【Java----工具类】字符串转义与反转义

apache工具包common-lang中有一个很有用的处理字符串的工具类&#xff0c;其中之一就是StringEscapeUtils,这个工具类是在2.3版本以上加上的去的&#xff0c;利用它能很方便的进行html,xml,Java等的转义与反转义&#xff0c;而且还能对关键字符串进行处理预防SQL注入&#xff0…

(一)Java实现五子棋(联机版)游戏

(一)设计思路&#xff1a; 游戏效果如下图所示&#xff1a; 游戏描述&#xff1a; 游戏采用Java设计&#xff0c;采用了面向对象思想&#xff0c;游戏使用Swing实现面板&#xff1b;采用哈希表Hashtable建立客户端和服务器端之间输入输出流的通信&#xff0c;使用户之间可以进…

Java并发编程(三)线程同步 上[synchronized/volatile]

概念 当使用多个线程来访问同一个数据时,将会导致数据不准确,相互之间产生冲突,非常容易出现线程安全问题,比如多个线程都在操作同一数据,都打算修改商品库存,这样就会导致数据不一致的问题。 所以我们通过线程同步机制来保证线程安全,加入同步锁以避免在该线程没有完成操作之前…

微信 [] provider:wx76a9a06e5b4e****, version:1.0.3, AppID 不合法,invalid appid Error: provider:wx76a9a06e

报错&#xff1a; [] provider:wx76a9a06e5b4e****, version:1.0.3, AppID 不合法,invalid appid Error: provider:wx76a9a06e5b4e693e, version:1.0.3, AppID 不合法,invalid appid at E:\微信web开发者工具\code\package.nw\core.wxvpkg\d670f7f30a19b01584db216c5c3f5a75.…

揭秘Google数据中心网络B4(李博杰)

本篇可以说是论文《B4: Experience with a Globally-Deployed Software Defined WAN》中文解析篇。 导读&#xff1a;这是“走进 SIGCOMM 2013”系列的第二篇。Google 首次将其数据中心广域网 (WAN) 的设计和三年部署经验完整地公之于众&#xff0c;这篇论文可能被评为 Best Pa…

由于没有公钥,无法验证下列签名: NO_PUBKEY 3B4FE6ACC0B21F32

**问题&#xff1a;**在使用sudo apt-get update更新的时候&#xff0c;报了以下错误 **解决&#xff1a;**打开终端&#xff0c;下载对应密钥 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32 3B4FE6ACC0B21F32是缺少的密钥&#xff0c;缺少…