- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的程序中,我有一个 PacketFactory
,它构建准备好通过 NetworkStream
发送的缓冲区。正如您在下面看到的,此方法采用 short 作为参数。此短消息传递给 BitConverter.GetBytes
。
internal static class PacketFactory
{
internal static byte[] ToBuffer(PacketType type, short value)
{
byte[] packet = PacketTypeFactory.ToBuffer(type);
byte[] valueBytes = BitConverter.GetBytes(value);
byte[] buffer = new byte[packet.Length + valueBytes.Length];
Array.Copy(packet, 0, buffer, 0, packet.Length);
Array.Copy(valueBytes, 0, buffer, packet.Length, valueBytes.Length);
return buffer;
}
}
现在我的问题是: BitConverter.GetBytes
有 10 个重载。我想在 ToBuffer
方法中为我的 value
参数轻松使用所有这些重载。
简单的解决方案:创建所有同样存在于 BitConverter.GetBytes
上的重载,并将所有内容传递给内部方法。有没有更好的方法来解决这个问题?
internal static class PacketFactory
{
private static byte[] ToBuffer(PacketType type, byte[] value)
{
byte[] packet = PacketTypeFactory.ToBuffer(type);
byte[] buffer = new byte[packet.Length + value.Length];
Array.Copy(packet, 0, buffer, 0, packet.Length);
Array.Copy(value, 0, buffer, packet.Length, value.Length);
return buffer;
}
internal static byte[] ToBuffer(PacketType type, short value)
{
return ToBuffer(type, BitConverter.GetBytes(value));
}
internal static byte[] ToBuffer(PacketType type, int value)
{
return ToBuffer(type, BitConverter.GetBytes(value));
}
}
最佳答案
使用接受 Func
的通用方法:
internal static byte[] ToBuffer<T>(SocketType type, Func<T, byte[]> getBytes, T value)
{
byte[] packet = PacketTypeFactory.ToBuffer(type);
byte[] valueBytes = getBytes(value);
byte[] buffer = new byte[packet.Length + valueBytes.Length];
Array.Copy(packet, 0, buffer, 0, packet.Length);
Array.Copy(valueBytes, 0, buffer, packet.Length, valueBytes.Length);
return buffer;
}
然后这样调用它:
short shortValue = 5;
PacketFactory.ToBuffer(SocketType.Raw, BitConverter.GetBytes, shortValue);
// BitConverter.GetBytes(short)
int intValue = 10;
PacketFactory.ToBuffer(SocketType.Raw, BitConverter.GetBytes, intValue);
// BitConverter.GetBytes(int)
这样,BitConverter.GetBytes
的正确重载将传递给 ToBuffer
。
关于c# - 为我自己的方法轻松使用 BitConverter.GetBytes 上存在的所有重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42738423/
我有以下代码,它会产生令人困惑的输出.. import java.io.UnsupportedEncodingException; import java.nio.charset.Charset;
考虑以下几点: public static void main(String... strings) throws Exception { byte[] b = { -30, -128, -9
今天看到一段代码,其中使用了UTF8Encoding.UTF8.GetBytes和Encoding.UTF8.GetBytes。它们之间有什么区别吗? 最佳答案 完全没有区别。 Encoding.UT
谁能解释一下赌注的区别是什么。 Encoding.UTF8.GetBytes 和 UTF8Encoding.Default.GetBytes?实际上,我正在尝试将 XML 字符串转换为流对象,现在发生
我需要使用 UTF-8 编码将字符串编码为字节数组。我正在使用 Google guava,它的 Charsets 类已经为 UTF-8 编码定义了 Charset 实例。我有两种方法: String.
我在 C# 和 Java 之间传递数据,分 4 个阶段进行转换: 到字节数组 到字符串(只需将每个字节添加为字符) 到 UTF8 字节4 转 base64 字符串 我发现 java 到 UTF8 的转
有什么区别 String(s.getBytes("UTF-8"),"UTF-8"); 和 String(s.getBytes(),"UTF-8"); 在第一个代码示例中,一些特殊字符被解码了,为什么以
我正在使用 Azure 事件中心,最初在发送数据以尝试计算批量大小时,我有类似于下面的代码,该代码将调用 EventData 。 GetBytes EventHubClient client;//in
我正在使用 Azure 事件中心,最初在发送数据以尝试计算批量大小时,我有类似于下面的代码,该代码将调用 EventData 。 GetBytes EventHubClient client;//in
我找到了一些答案,但没有一个适合我。我想从 html 制作一个 pdf 文件,但问题是我的 html 有西里尔字母,我发现这个简单的代码与此有关: String s = "Здраво Kris";
我正在生成一个 session key ,每次运行程序时该 key 都会发生变化。但是当我将其转换为字节数组时,每次运行程序时生成的字节数组都是相同的。 IT应该有所不同吧?这是我的代码 Key ke
import java.io.UnsupportedEncodingException; import java.util.Arrays; public class Main { public st
我正在为我的应用程序使用 ZXing 库,并且使用 this 类。但是当我运行我的应用程序时,我在这一行出现错误: String msg = "123456"; byte[] msgBinary =
这个问题已经有答案了: What 'length' parameter should I pass to SqlDataReader.GetBytes() (2 个回答) 已关闭 10 年前。 我对
这个问题在这里已经有了答案: How do I convert from int to String? (20 个答案) 关闭 5 年前。 java byte []b = (i+"").getByt
*"Hätten Hüte ein ä im Namen, wären sie möglicherweise keine Hüte mehr, sondern Häte." 72 -61 -92
我编写了自己的类,将 C# 标准原语转换为字节数组。 后来,我看了一下BitConverter类source ,看看专业人士是如何做到的。 我的代码示例: public static byte[] g
我正致力于在 .net 核心中编写自己的 DNS 服务器。我正处于对响应有效负载进行编码以发回的阶段,架构显示大多数数字都编码为 16 位数字。 C# 的整数是 32 位数字。没什么大不了的,我只是去
目前,我需要在 Java 中处理字符串的字节,这引发了很多关于 JVM 的编码和实现细节的问题。我想知道我所做的是否有意义,或者是否多余。 首先,我了解到在运行时,String 中的 Java cha
我尝试了许多带有随机字符的字符串,除了空字符串“”,它们的 .getBytes() 字节数组似乎从不包含任何 0 值(如 {123、-23、54、0、-92})。 他们的 .getBytes() 字节
我是一名优秀的程序员,十分优秀!