问题标签 [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# - 如何在c#中获取声音数据样本值
我需要获取 WAV 文件的声音数据的样本值,以便通过使用这些样本值,我需要每秒获取该声音数据的幅度值。
重要提示:有什么方法可以使用 Naudio 库或 wmp 库获取音频数据样本值?
我以这种方式获取样本值:
但我得到的负值更像(-326260)。这是对还是错?我的意思是样本值可以是负数还是负数,如果它是正确的,那么它是什么意思?
c# - .NET 便携式库缺少 BitConverter.DoubleToInt64Bits,替换非常慢
我正在用 C# 开发一个可移植类库,我想将 a 位转换double
为long
. 这个问题最直接的解决方案是使用该BitConverter.DoubleToInt64Bits
方法,但不幸的是,该方法在 .NET 类库的 Portable Library 子集中不可用。
作为替代方案,我提出了以下“两次”位转换:
我的测试表明,这个表达式始终产生与DoubleToInt64Bits
. 但是,我的基准测试也表明,这种替代公式比在完整的 .NET Framework 应用程序中实现时慢大约四倍。DoubleToInt64Bits
仅使用便携式库子集,是否可以实现DoubleToInt64Bits
比我上面的公式更快的替换?
clr - 可以使用 BitConverter 从 IL 字节流(由 MethodBody.GetILAsByteArray 返回)可靠地提取多字节值吗?
我正在研究一些代码,这些代码将 IL 字节数组解析为MethodBody.GetILAsByteArray
.
假设我想从这样的 IL 字节流中读取元数据令牌或 32 位整数常量。起初我认为使用BitConverter.ToInt32(byteArray, offset)
会使这变得容易。但是我现在担心这在大端机器上不起作用。
据我所知,IL 总是对多字节值使用 little-endian 编码:
“所有参数编号都被编码为最小地址的最低有效字节(一种通常称为“小端”的模式)。” —公共语言基础结构注释标准,第 III 部分,ch。1.2(第 482 页)。
由于BitConverter
的转换方法尊重计算机体系结构的字节顺序(可以通过 发现BitConverter.IsLittleEndian
),因此我得出结论,BitConverter
不应使用它从 IL 字节流中提取多字节值,因为这会在大端机器上给出错误的结果。
这个结论正确吗?
如果是:有没有办法告诉
BitConverter
转换使用哪种字节顺序,或者 BCL 中是否有任何其他类提供此功能,或者我是否必须编写自己的转换代码?如果不是:我哪里错了?
Int32
从 IL 字节数组中提取操作数值的正确方法是什么?
vb.net - How do I limit BitConverter.GetBytes() to return only a certain amount of bytes using VB.NET?
I do:
Since, by default, they are 32 bits, it returns 4 byte elements.
I want to be able to control it to return only like two bytes. Maybe only three bytes. Are there any built-in functions to control it?
I don't want to rely on using shifting >> 8 >> 16 >> 24 >> 32
, etc..
I also don't want to rely on type casting the data in GetBytes() to a specific datatype.
c# - 将 `UInt16` 转换为字节数组
如何将值转换UInt16
为大小为 2 的字节数组
我在 MSDN 中找到了一些代码,但我不确定在我的情况下是否可以使用:
我所拥有的是UInt16
......可以将其转换为ushort
并使用上面的代码吗?!
r - 将二进制字符串转换为二进制或十进制值
是否有任何函数可以将二进制字符串转换为二进制或十进制值?
如果我有一个二进制字符串000101
,我应该怎么做才能将它转换成5
?
c# - 为什么 BitConverter 会缩小我已经分配的数组?(我试图防止二进制补码问题)
我正在分配一个故意大于 BitConverter.GetBytes 结果的数组。我的目标是将最后一个字节留空,这样我就可以防止这个数字被视为两者的恭维并拥有 tempPosBytes2[
当我运行 BitConverter.GetBytes 时,我的数组tempPosBytes2
似乎缩小了。
问题
幕后发生了什么,如何在不复制数组的情况下留下尾随字节?
我需要它与 BigInteger(byte[]) 一起使用,如下所示:
c# - 将 int 值转换为 3 字节数组(反之亦然)
我正在开发一个从硬件设备读取/写入数据的 C# WinForms 应用程序。我的应用程序有一个多选列表框,其中包含数字 1 - 100000,用户最多可以选择 10 个数字。当他们选择完每个数字后,用户单击一个按钮,我的事件处理程序代码需要使用 3 个字节来构建一个固定大小(30 个字节)的字节数组来表示每个选定的数字,如果少于 10 个数字则填充数组选择。
例如,假设我的用户选择以下值:
我目前正在使用此代码将每个数字转换为字节数组:
对于我上面列出的数字,这会产生以下结果:
BitConverter 给了我一个 4 字节数组,我只有空间可以使用 3 个字节将每个数字存储在最终字节数组中。我可以删除每个单独字节数组的最高有效字节,然后像这样构建我的最终数组:
将其写入设备应该可以工作。但是从设备中读取数组(或类似数组)给我带来了一些问题。当我有一个 3 字节数组并尝试使用此代码将其转换为 int 时...
...我得到“目标数组不够长,无法复制集合中的所有项目。” 我想我可以在每三个字节的开头插入一个 0x00 的最重要字节,然后进行转换,但是有没有更好的方法来做到这一点?
.net - 如何在没有OverflowException的情况下将无符号整数转换为有符号整数
我希望能够将高值无符号整数(使用最高位的值)转换为有符号整数。在这种情况下,我不在乎该值是否高于有符号整数类型的最大值。我只是希望它转换为任何位值表示为有符号整数。换句话说,我希望它会产生一个负数。
但是,对于 VB.NET,该CType
操作不能以这种方式工作(或任何其他转换函数,如CShort
and CInteger
)。当您尝试转换高于所需有符号类型最大值的无符号值时,它会抛出一个OverflowException
而不是返回一个负数。例如:
同样值得一提的是,该DirectCast
操作不能用于在有符号和无符号类型之间转换值,因为这两种类型都不继承或实现另一个。例如:
我已经想出了一种方法来做我想做的事,但这似乎不必要地难看。这是我如何让它工作的:
就像我说的那样,这行得通,但是如果在 VB.NET 中有更简单、更清洁的方法,我很想知道它是什么。
javascript - 如何将数组中的最后 4 个字节转换为整数?
如果我Uint8Array
在 JavaScript 中有一个数组,我将如何获取最后四个字节,然后将其转换为 int?使用 C# 我会做这样的事情:
有没有一种不等价的方式来使用 JavaScript 做到这一点?