using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WCS_Client
{
public class BinaryHelper
{
///
/// Char字符转成7位二进制
///
///
///
public string StringToBinary(string ss)
{
byte[] u = Encoding.ASCII.GetBytes(ss);
string binaryNum = string.Empty;
string result = string.Empty;
foreach (byte a in u)
{
binaryNum = Convert.ToString(a, 2);
if (binaryNum.Length < 7)
{
for (int i = 0; i < 7 - binaryNum.Length; i++)
{
binaryNum = '0' + binaryNum;
}
}
result += binaryNum;
}
return result;
}
///
/// 存储二进制的字符串转成对应的数据
///
///
///
public string BinaryToString(string binstr)
{
char[] np = binstr.ToCharArray();//"1000001000000001100010110010".ToCharArray();
string username = "";
string password = "";
bool flag = false;
string result = "";
for (int i = 0; i < np.Length; i++)
{
result += np[i];
if (result.Length % 7 == 0)
{
if (Convert.ToInt32(result, 2) == 0)
{
flag = true;
result = string.Empty;
continue;
}
if (flag)
password += Convert.ToChar(Convert.ToInt32(result, 2));
else
username += Convert.ToChar(Convert.ToInt32(result, 2));
result = string.Empty;
}
}
return result;
}
///
/// 将字符串转成二进制
///
///
///
public static string bianma(string s)
{
byte[] data = Encoding.Unicode.GetBytes(s);
StringBuilder result = new StringBuilder(data.Length * 8);
foreach (byte b in data)
{
result.Append(Convert.ToString(b, 2).PadLeft(8, '0'));
}
return result.ToString();
}
//public static byte[] bianma2(string s)
//{
// byte[] data = Encoding.Unicode.GetBytes(s);
// return data;
//}
///
/// 将二进制转成字符串
///
///
///
public static string jiema(string s)
{
System.Text.RegularExpressions.CaptureCollection cs =
System.Text.RegularExpressions.Regex.Match(s, @"([01]{8})+").Groups[1].Captures;
byte[] data = new byte[cs.Count];
for (int i = 0; i < cs.Count; i++)
{
data[i] = Convert.ToByte(cs[i].Value, 2);
}
return Encoding.Unicode.GetString(data, 0, data.Length);
}
public static string jiema2(byte[] data)
{
return Encoding.Unicode.GetString(data, 0, data.Length);
}
///
/// byte数组转二进制样式的字符串
///
/// byte数组
///
public static string ByteArray2BinaryStr(byte[] byteArr)
{
List strList = new List();
var bl = byteArr.Length;
if (bl == 0)
return "";
else
{
var tempStr = string.Empty;
for (var i = 0; i < bl; i++)
{
tempStr = Convert.ToString(byteArr[i], 2);
if (tempStr.Length < 4)
tempStr = tempStr.PadLeft(4, '0');
strList.Add(tempStr);
}
}
return string.Join("", strList.ToArray());
}
///
/// 二进制样式的字符串转byte数组
///
/// 二进制样式的字符串
///
public static byte[] BinaryStr2ByteArray(string binaryStr)
{
if (string.IsNullOrEmpty(binaryStr)) binaryStr = string.Empty;
List byte_List = new List();
var strL = binaryStr.Length;
if (strL == 0)
byte_List.Add(0);
else if (strL > 0 && strL <= 4)
byte_List.Add(Convert.ToByte(binaryStr, 2));
else
{
var tempStr = string.Empty;
for (var i = strL; i > 0; i = i - 4)
{
if (i - 4 > 0)
tempStr = binaryStr.Substring(i - 4, 4);
else
tempStr = binaryStr.Substring(0, i);
byte_List.Add(Convert.ToByte(tempStr, 2));
}
}
byte_List.Reverse();
return byte_List.ToArray();
}
}
}