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)
不要采取这种方法.您应该写入某些描述的二进制流 - 并写入数据包/消息长度的二进制数据,然后是消息本身.例如:
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)
根本不需要将二进制数据视为文本.