C# - 在String中获取整数字节数组

Joe*_*ore 1 c# arrays encoding character-encoding

我有一个随机整数值,我需要在String中表示为Byte数组.例如:

int value = 32;
String strValue = getStringByteArray(value);
Console.WriteLine(strValue); // should write: " \0\0\0"
Run Code Online (Sandbox Code Playgroud)

如果value = 11那么getStringByteArray(value)shuld返回"\v\0\0\0".

如果value = 13那么getStringByteArray(value)shuld返回"\r\0\0\0".

等等.

有关如何getStringByteArray(int value)在C#中实现该方法的任何想法?

UPDATE

这是从C#NamedPipe服务器接收数据的代码:

bool CFilePipe::ReadString(int m_handle, string &value)
{
   //--- check for data
   if(WaitForRead(sizeof(int)))
     {
      ResetLastError();
      int size=FileReadInteger(m_handle);
      if(GetLastError()==0)
        {
         //--- check for data
         if(WaitForRead(size))
           {
            value=FileReadString(m_handle,size);
            return(size==StringLen(value));
           }
        }
     }
   //--- failure
   return(false);
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 8

不要采取这种方法.您应该写入某些描述的二进制流 - 并写入数据包/消息长度的二进制数据,然后是消息本身.例如:

BinaryWriter writer = new BinaryWriter(stream);
byte[] data = Encoding.UTF8.GetBytes(text);
writer.Write(data.Length);
writer.Write(data);
Run Code Online (Sandbox Code Playgroud)

然后在另一端,您将使用:

BinaryReader reader = new BinaryReader(stream);
int length = reader.ReadInt32();
byte[] data = reader.ReadBytes(length);
string text = Encoding.UTF8.GetString(data);
Run Code Online (Sandbox Code Playgroud)

根本不需要将二进制数据视为文本.