所以我正在编写一个需要访问注册表的应用程序.我没有触及任何构建设置,希望在添加其他触摸(例如描述或名称)之前让事情正常工作.
出乎意料的是,我得到了一个不会消失的错误.ClickOnce does not support the request execution level 'requireAdministrator'.现在,我没有在这个应用程序中触及ClickOnce.我所做的就是包括一个请求这些权限的清单文件.
我现在的问题是这个错误不会消失,我无法编译我的程序.关于该怎么做的任何建议?(旁注:我准备去睡觉了,明天下午我会检查一下).
所以我的设计结合了CRC32C校验和,以确保数据没有被损坏.我决定使用CRC32C,因为如果运行软件的计算机支持SSE 4.2,我可以同时拥有软件版本和硬件加速版本.
我将使用英特尔的开发人员手册(第2A卷),它似乎提供了该crc32指令背后的算法.但是,我运气不好.英特尔的开发人员指南说明如下:
BIT_REFLECT32: DEST[31-0] = SRC[0-31]
MOD2: Remainder from Polynomial division modulus 2
TEMP1[31-0] <- BIT_REFLECT(SRC[31-0])
TEMP2[31-0] <- BIT_REFLECT(DEST[31-0])
TEMP3[63-0] <- TEMP1[31-0] << 32
TEMP4[63-0] <- TEMP2[31-0] << 32
TEMP5[63-0] <- TEMP3[63-0] XOR TEMP4[63-0]
TEMP6[31-0] <- TEMP5[63-0] MOD2 0x11EDC6F41
DEST[31-0] <- BIT_REFLECT(TEMP6[31-0])
Run Code Online (Sandbox Code Playgroud)
现在,据我所知,我已经完成了TEMP6正确开始的所有事情,但我想我可能要么误解多项式除法,要么错误地实现它.如果我的理解是正确的,那么1 / 1 mod 2 = 1,0 / 1 mod 2 = 0两个除零都是未定义的.
我不明白的是64位和33位操作数的二进制除法是如何工作的.如果SRC是0x00000000,并且DEST是0xFFFFFFFF,TEMP5[63-32]将所有设置位,而TEMP5[31-0]将全部取消设置位.
如果我要使用来自TEMP5分子的位,那么将有30个除以零,因为多项式 …
作为一个小项目(没有关键任务),我决定尝试在C#中编写GOST 28147-89的实现.然而,在阅读RFC 5830(信息定义GOST 28147-89)时,我注意到了这一点.
(+)是对模2的相同长度的单词的逐位加法.
[+]是模2 ^ 32的32位向量的加法.
这两者之间有什么区别,主要是第一次指定按位加法,第二次只是说明加法?
所以我决定尝试制作一个文本突出显示系统.目前,我只是str_replace用来替换一个单词(例如输入字符串$rstr = str_replace("Console", "<c>Console</c>", $str在哪里$str.
困扰我的是如何替换语音标记(")和引号(')内的内容.例如,如果字符串"控制台"变成了Console.WriteLine("Words");,我怎么会替换"Words"用<sr>"Words"</sr>(<sr>在外部样式表中定义)?
我有我可以使用正则表达式一个,虽然,但1.我不知道该怎么写正则表达式,和2我不知道如何使用正则表达式str_replace.
function hlStr($original)
{
$rstr = explode('"', $original);
return $rstr[0].'<sr>"'.$rstr[1].'"</sr>'.$rstr[2];
}
Run Code Online (Sandbox Code Playgroud) 所以我最近一直在尝试D,因为我认识的许多程序员都建议我通过C++学习它.
我正在使用DMD Compiler v2.057,这是我的代码:
while(cliLoopC)
{
write("?> ");
string iPt_ = std.string.tolower(readln());
switch (iPt_)
{
default: writeln(E_URECCOM); break;
case "test":
writeln("Hello!");
break;
}
}
Run Code Online (Sandbox Code Playgroud)
程序是这样的,每当我输入时test,它应该转到case而不是default,它只打印E_URECCOM的内容(这是一个包含的常量char [] UNRECOGNISED COMMAND\n).
我不知道发生了什么让它做到这一点.有任何想法吗?
我正在使用cpuid操作码来检索处理器模型和扩展模型的值.我正在使用的文档说我必须将扩展模型的值连接到模型的值,并且我可以得到正确的模型.
Ex. Model: 2h
Model: Eh
Required Output: 2Eh
Run Code Online (Sandbox Code Playgroud)
这是一个例子,但还有更多喜欢它.如何将两个数字连接在一起(这是4位无符号整数)以在C++中接收所需的输出?
在编写程序时,我最近遇到了一个奇怪的问题.两个字节的八个值的数组,每个都具有相同的值,在使用==运算符时报告为不相等,并且值GetHashCode()也不同.
byte[] id = new byte[8] {
0x00, 0x00, 0x00, 0x00,
0xF8, 0x00, 0x00, 0x00
};
byte[] od = new byte[8] {
0x00, 0x00, 0x00, 0x00,
0xF8, 0x00, 0x00, 0x00
};
Console.WriteLine(id == od);
Console.WriteLine(id.GetHashCode());
Console.WriteLine(od.GetHashCode());
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
该程序输出到控制台如下:
False
45653674
41149443
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供一些输入,为什么这些字节数组不被视为相等?