问题标签 [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#将一个补码位转换为一个二进制补码长?
在 C# 中,如何将 64 位补码数(表示为 long 或 ulong)转换为有符号的二进制补码 long?
作为参考,我正在尝试使用BitConverter.DoubleToInt64Bits()
.
c# - C# 泛型:将泛型类型转换为值类型
我有一个通用类,它保存指定类型 T 的值。该值可以是 int、uint、double 或 float。现在我想获取值的字节以将其编码为特定的协议。因此我想使用方法 BitConverter.GetBytes() 但不幸的是 Bitconverter 不支持泛型类型或未定义的对象。这就是为什么我要转换值并调用 GetBytes() 的特定重载。我的问题:如何将通用值转换为 int、double 或 float?这不起作用:
是否有可能转换一个通用值?还是有另一种获取字节的方法?
c# - byte[8] 到 bits[64] 解析
我正在使用 c# 读取二进制文件。文件类型的规范说有 6 个东西打包成一个字节 [8]。但是,它说第一个变量是 0-19 位。第二个变量 20-39,第三个 40-59,第四个 60-62 和 63 位是布尔值。如何将这些位转换为有意义的数据?除了最后一位之外,所有这些变量都是 uint。
c# - C# Byte[] 到长反转不起作用
为什么这个程序不起作用?我将一个字节数组转换为长数组。然后从 long 我转换回字节数组。生成的字节数组与原始数组不同。
vb.net - VB.net TCP 流式传输字节,算术运算导致溢出
我已经为此工作了几天,我只是在旋转我的轮子。这是一段 vb.net 代码,用于连接到 mikrotik 路由器的 api。它是在他们的 wiki 上提供的,但是会弹出一个错误,我很难找到答案。
大多数情况下,当我运行它时,一切正常,但如果响应太长,它就会出错,我认为这至少是导致它的原因。如果代码到达
我得到“算术运算导致溢出”
我知道这一切是如何运作的,但我只是不明白这里发生了什么。tcpStream.ReadByte() 返回 143
tmp(3) 返回 128
BitConverter.ToInt32(New Byte() {tcpStream.ReadByte(), tmp(3), 0, 0}, 0) ^ &H8000 返回“无限”,我认为这是问题所在。
如果您对其使用的完整代码感兴趣,可以在这里找到: http ://wiki.mikrotik.com/wiki/API_in_VB_dot_NET
如果没有人能告诉我出了什么问题,我真的很想知道这段代码在做什么......希望他们能评论他们的代码 =P
非常感谢大家
c# - c# bitconverter.ToString 转换为十六进制字符串
我BitConverter.ToString(bytes)
用于将字符串转换为十六进制字符串,然后将其进一步转换为整数或浮点数。
但是输入流由 0 组成,表明字节值为 0。所以假设我有一个整数,它由从位置 x 开始的 2 个字节的输入表示,第一个由EE
while 2nd byte is组成00
。现在,当我使用时,BitConverter.ToString(bytes, x, 2).Replace ("-","")
我得到的输出是EE00
其整数值,60928
但在这种情况下,输出应该是238
仅将第一个字节转换EE
为整数。
但在其他一些情况下,这 2 个字节可能是EE01
其整数值60929
,在这种情况下是正确的。
有什么建议可以解决我的问题吗?
由于有些人说这个问题令人困惑,我将重申我的问题,我有很长的十六进制字符串作为输入。在十六进制字符串中
1) 前 12 个字节代表字符串。2)接下来的 11 个字节也代表一些其他的字符串。3) 接下来的 1 个字节代表整数。4) 接下来的 3 个字节代表整数。5) 接下来的 4 个字节代表整数。6) 接下来的 4 个字节代表浮点数。7) 接下来的 7 个字节代表字符串。8) 接下来的 5 个字节代表整数。
因此,对于第 4 种情况,如果字节是 ee 00 00,那么我应该忽略 0 并将 ee 转换为整数。但如果它 ee 00 ee 那么我应该将 ee00ee 转换为整数。同样,每次我都会遵循与上述相同的模式。
hash - 有没有比 BitConverter.IsLittleEndian 更好的方法来检测 .NET 中的字节顺序?
如果 .NET 框架仅提供来自 BitConverter 类的函数/方法,该类仅以正确请求的字节序显式返回字节数组,那就太好了。
我已经在其他代码中完成了一些类似的功能,但是有没有更短更直接的方法?(效率是关键,因为这个概念在各种加密和密码派生上下文中使用 TON,包括 PBKDF2、Skein、HMAC、BLAKE2、AES 等)
我也看到其他人在这个问题上苦苦挣扎,我还没有看到一个好的答案:( 如何处理'Endianness'
c# - C# 中围绕 BitConverter.Int64BitsToDouble 的安全性和稳定性问题
我正在编写一个自定义反序列化系统,用于通过网络对数据进行打包,并通过以下方式对双打进行序列化:
该EncodeInteger
函数只是将整数转换为标记字符串,以便反序列化代码知道它具有正确的数据类型。
另一方面,我反序列化如下:
同样,DecodeInteger
只需删除标签并验证该值是否在 long 范围内,然后强制转换为 long。这是安全的,因为如果出现任何问题,它只会抛出异常。
我担心的原因是,在进入参考源之后,我看到了这种直接的不安全演员表:
我预见的问题是 long 的值可以任意修改,因为它是通过网络传输的。我并不担心被任意修改的值,而是如果发送无效的底层double
表示,CLR 可能会遇到问题。
我不确定是否有任何潜在的long
值不映射到有效的double
,但如果有,我可能会看到什么?CLR 会崩溃,导致拒绝服务吗?或者是否有可以捕获的异常?
c# - 将 byte[] 转换为数组问题
请检查此代码
这会产生一个奇怪的结果。b 将是 { 0xBF, 0x04, 0xCE, 0xFF }
我猜这是因为 f 的值是 NaN。我问这个问题的原因是因为我使用 Marsal 将字节流转换为包含浮点数的结构,我交换字节序
问题是当我到达现场时已经搞砸了(就像上面的例子)
有任何想法吗?
谢谢!
c# - C#,BitConverter.ToUInt32,不正确的值
我尝试将 IP 地址转换为长值:
Ret1 返回3232235776
(正确的值)
Ret2 返回108736
(?)
为什么会有这种差异?