问题标签 [bitconverter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 部署时 Azure 从小端切换到大端
好的,我有这个奇怪的问题。我创建了一个使用 TcpClient 和 Reactive Extensions 连接到聊天服务器的 workerrole。当我在模拟器中运行时,代码有效。一开始我认为 Rx 存在一些问题,但现在看起来,我收到的包之间的字节顺序发生了变化。
一点背景资料。我收到的前 4 个字节是标头,前 2 个字节是数据包类型,最后 2 个是剩余长度。要调试问题,我执行以下语句:
第一个数据包如下所示:
第二对在这里是正确的((0,34),其中 0 = LoginSeed,34 是余数)。
第二个数据包如下所示:
这里第一对突然是正确的,并且没有变化表明这突然是大端。我不禁认为这只是 Azure 中的某种错误,还是我忽略了?请记住模拟器中的这项工作,所以我认为它应该与一些基础设施问题有关。
c# - 在 C# 中是否有相当于 python 的 struct.pack 的?
C# 中是否有或多或少相当于 Python 的 struct pack?我基本上需要做的是在 C# 中“重写”python 脚本的一部分。需要以下函数来准备一些文本,以便可以通过套接字发送...
我已经尝试了一些使用 MemoryStream 等的方法,但是远程应用程序(本地服务器)yust 向日志中发送了错误信息......如果可以使用 VS 的“板载”资源来使用它会很好,为了简单起见,只要我愿意例如在工作中需要它,我会知道如何在没有额外库的情况下解决它
c# - 如何以字节有效地存储整数?
我正在寻找一种以字节为单位存储整数的好方法。
情况如下:我有两个整数,值 1 是“1857”(11 位),值 2 是“14”(4 位)和 2 个字节(16 位)。我正在寻找的是将 2 个整数存储在 2 个字节中。这意味着剪切第一个整数,将 8 位放在第一个字节中,其余的加上第二个整数在第二个字节中。我还需要让他们重新在一起。
有没有办法或.net类来做到这一点?我找到了 BitConverter 类,但这不是我要找的,因为这个类只将一个整数转换为一个完整的字节数组。
c# - 使用 BitConverter 时插入的空格
当我将Queue<byte>
列表转换为字符串以进行比较时,我遇到了在字符之间插入某种空格的问题。但是,我不认为它们是实际的空白字符,因为 Queue 只保留了七个值,并且在调试时我仍然能够看到这七个字符值。见图片:
相关代码:
c# - 为什么 BitConverter 比直接进行按位运算要慢?
我最近对一些代码进行了一些分析,发现对 BitConverter 的调用消耗了最大的 CPU 使用率,例如:
当切换到类似的东西时:
我注意到性能有了很大的提高。
我的问题是为什么使用 BitConverter 这么慢?我会假设 BitConverter 本质上是在内部进行相同类型的位移。
c# - Why does the shortcut used by BitConverter when the start index is divisible by the size of the type being converted to work?
I've recently been looking into how BitConverter works and from reading other SO questions I've read that it takes a 'shortcut' when the start index is divisible by the size of the type being converted to where it can just cast a pointer the byte at the index into a pointer to the type being converted to and de-reference it.
Source for ToInt16 as an example:
My question is why does this work regardless of the endianness of the machine, and why doesn't it use the same mechanism when the data is not aligned?
An example to clarify:
I have some bytes in buffer
that I know are in Big endian format, and I want to read a short value from the array at say, index 5. I also assume that my machine, since it is Windows, uses little endian.
I would use BitConverter like so, by switching the order of my bytes to little endian:
assuming the code takes the shortcut it would do what I want: just cast the bytes as they are in the order provided and return the value. But if it didn't have that shortcut code, wouldn't it then reverse the byte order again and give me the wrong value? Or if I instead did:
wouldn't it give me the wrong value since the index is not divisible by 2?
Another situation:
Say I had an array of bytes that contained an short somewhere I want to extract already in little endian format, but starting at an odd offset. Woulnd't the call to BitConverter reverse the order of the bytes since BitConverter.IsLittleEndian is true and the index is not aligned, thus giving me an incorrect value?
c# - 使用 Silverlight 的泛型问题
我正在使用 Silverlight 5 (VS 2010) 创建一个 C# Web 应用程序。
我最初创建了一个运行良好的控制台应用程序,现在我正在将其调整为 Web 应用程序。
即使在 Web 应用程序中,它对于特别设置的数据类型也可以正常工作(例如 forint
而不是<T>
它可以正常工作)但是当我使用泛型时它就不起作用了。它编译无错误,但它甚至不调试设置为“切换断点”的区域。最初的 GUI 是这样的:
但是当控制传递到容易出错的部分时,GUI突然像这样消失了
我保留断点的地方被这个取代了
(见最左边)因此我无法调试以找到问题。
我正在尝试做的一些解释:在下面的给定代码中,我有一个二进制文件并存储在数据类型的“fileContents”中byte[]
(我没有向您透露读取该文件的方法,现在您可以考虑该 fileContents 包含MainPage
类内二进制文件的内容)。实际上,我会将符号(形式为 0 和 1 的符号存储在二进制文件中)并找到它的频率(通过计算它在文件中重复的次数,但这没有问题,所以我没有为它编写方法)。但是我的代码中的这个变量processingValue
将是通用类型(<T>
"symbol"
<T>
short
int
long
UInt32
UInt64
等)我没有在我的代码中显示)。
我有这样的场景:
BitConverter
MainPage 类的对象创建中的功能有什么问题吗?
我什至无法调试 Huffman 类,我在 Huffman 类的起点和终点设置了断点,但控件没有进入,并且 Internet Explorer 上的按钮(使用 XAML GUI 创建)消失了。
这是我的完整代码:(请注意我正在读取二进制文件(任何扩展名为“.o”(FileName.o)的文件都可以用于测试我的代码,我读得很好)):
这是xml代码:
就我的保证而言,这个问题是由于 Huffman 构造函数中的BitConverter调用函数 Func 转换器造成的问题。我想我需要以其他方式使用 Func 转换器非常感谢您的帮助。
c# - 将字节数组转换为浮点 32 位和 64 位?
如何将字节数组中的 4 个字节转换为 32 位浮点数?那么对于 64 位浮点数(双精度),您将如何对字节数组中的 8 个字节执行相同操作?我注意到 C# 中的 BitConverter 类有这个,但是我很好奇它背后的数学。
我目前已经编写了很多字节转换函数,尽管只使用 BitConverter 类而不是我自己的函数会更有效吗?
vb.net - 处理缓慢
好吧,我正在尝试将各种数据“字节”转换为“长”。而且它似乎很慢......
代码:
转换器:
有人有提示或解决方案吗?
c# - 为什么我不能使用 BitConverter 将 byte[2] 数组转换为 int?
主要问题是我从 SerialPort 接收到一个仅使用 10 位的二进制数,所以我用它来接收完整的数据:
将二进制转换为 int 的最初想法是:
binary 显然是一个字符串,它可以工作,但我需要知道是否存在另一个解决方案,而不是我尝试使用的 previuos 代码:
但这仅读取前 8 位,我需要缺少其他 2 位!如果我将 ToInt16 更改为 ToInt32
程序因 System.ArgumentException 停止:目标数组不够长...
我能做些什么?