草庐IT

c# - 在 64 位整数中查找最高和最低有效位集的快速方法

在StackOverflow上有很多关于这个的问题。很多。但是我找不到这样的答案:使用C#适用于64位整数(相对于32位)快于:privatestaticintObvious(ulongv){intr=0;while((v>>=1)!=0){r++;}returnr;}甚至intr=(int)(Math.Log(v,2));我在这里假设64位IntelCPU。一个有用的引用是BitHackspage另一个是fxtbook.pdf然而,虽然这些提供了解决问题的有用方向,但它们并没有给出现成的答案。我正在寻找一个可重复使用的函数,它可以执行类似于_BitScanForward64的操作和_

c# - LDAPS 连接出现未知错误 (0x80005000)

在过去的几个小时里,我一直被烦人的ActiveDirectory位所困扰。我想要完成的是通过基于SSL的LDAP连接到ActiveDirectory。身份验证类型是匿名的。我正在使用.NETFramework4.0、C#和VisualStudio2010。以下代码应根据各种在线资源工作。但它不断提出令人惊叹的不言自明:“未知错误(0x80005000)”。DirectoryEntryentry=newDirectoryEntry();entry.Path="LDAPS://some.ldap.server:636";entry.AuthenticationType=Authentica

c# - 十六进制值 0x00 是加载 XML 文档的无效字符

我最近有一个无法加载的XML。错误信息是Hexadecimalvalue0x00isainvalidcharacter通过LinqPad中的最少代码接收(C#语句):varxmlDocument=newXmlDocument();xmlDocument.Load(@"C:\Users\Thomas\AppData\Local\Temp\tmp485D.tmp");我用十六进制编辑器检查了XML,但找不到0x00字符。我将XML最小化为在我的十六进制编辑器中它显示为Offset(h)000102030405060708090A0B0C0D0E0F00000000FFFE3C003F007

C# 在 64 位操作系统上读取错误的注册表数据

我在64位Windows上工作,我的应用程序以提升的权限运行。我对以下非常简单的代码有疑问:myKey=Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");if(myKey!=null){string[]HKLMvaluenames=myKey.GetValueNames();}但由于某些原因,HKLMvaluenames数组填充了来自以下键的值:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\Curren

c# - 名称不能以 '1' 字符开头,十六进制值为 0x31。第 2 行,位置 2

在C#应用程序中加载XML文件时,我得到了Namecannotbeginwiththe'1'character,hexadecimalvalue0x31.Line2,position2.XML标签是这样开始的。我不应该不惜任何代价更改此标签。我该如何解决? 最佳答案 您应该更改标签名称,因为您编写的标签名称违反了thexmlstandard.在这里记住其中有趣的部分:XML命名规则XML元素必须遵循以下命名规则:名称可以包含字母、数字和其他字符名称不能以数字或标点字符开头名称不能以字母xml(或XML、Xml等)开头名字不能包含空格

C# 访问 64 位注册表

我想知道是否可以在64位电脑上使用C#访问以下注册表项。HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run在32位电脑上访问时它工作正常,但在64位电脑上它重新定向到具有不同key的HKLM\SOFTWARE\Wow6432Node的native64位路径。我已经浏览了有关此的各种文章,但无法真正找到关于如何在C#中访问64位pc中的32位key的明确答案。谢谢。 最佳答案 如果您的目标是.NetFramework4.0或更高版本,那么您可以通过传递RegistryView.Regi

C# - 32 位和 64 位的数学运算结果不一致

考虑以下代码:doublev1=double.MaxValue;doubler=Math.Sqrt(v1*v1);r=double.MaxValue在32位机器上r=Infinityon64-bitmachine我们在32位机器上开发,因此直到客户通知后才意识到问题。为什么会出现这种不一致?如何防止这种情况发生? 最佳答案 由于FPU的工作方式,x86指令集存在棘手的浮点一致性问题。执行内部计算时使用的有效位多于可以存储在double中的有效位,当数字从FPU堆栈刷新到内存时会导致截断。这在x64JIT编译器中得到修复,它使用SSE

c# - SQLException (0x80131904) : Invalid object name 'dbo.Categories'

我在运行应用程序时遇到上述异常。该应用程序正在使用asp.netmvc3/C#。我制作了一个mdf文件并将其添加到VisualWebDeveloperExpress的App_Data文件夹下。我将连接字符串添加到web.config文件夹,但是当我运行并浏览到/store时,我收到上面的错误,并突出显示varcategories=storeDB.Categories.ToList();行。我的数据库包含6个表,其中一个是类别。Controller:EventCalendarEntitiesstoreDB=newEventCalendarEntities();publicActionRe

C# 方法类似于 Base64String,但只有字母数字(没有加号或斜线)

是否有任何C#方法类似于Convert.ToBase64String但除了字母数字输出之外不生成任何内容?谢谢! 最佳答案 答案现在有点过时了。为了future搜索者的利益:现在在C#中处理此问题的最佳方法是:byte[]b;//fillyourbytearraysomehowstrings=System.Web.HttpServerUtility.UrlTokenEncode(b);这将返回一个URL安全的Base64编码字符串(这是您在问题的评论中所说的真正追求的内容)。然后你可以再次解码它,你猜对了:byte[]b=Syste

c# - 将 base64Binary 转换为 pdf

我有base64Binary的原始数据。stringbase64BinaryStr="J9JbWFnZ......"如何制作pdf文件?我知道它需要一些转换。请帮助我。 最佳答案 第1步是将base64字符串转换为字节数组:byte[]bytes=Convert.FromBase64String(base64BinaryStr);第2步是将字节数组保存到磁盘:System.IO.FileStreamstream=newFileStream(@"C:\file.pdf",FileMode.CreateNew);System.IO.Bi