博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
string和byte[]的转换
阅读量:4330 次
发布时间:2019-06-06

本文共 1763 字,大约阅读时间需要 5 分钟。

 s
tring
类型转成byte[]

byte
[] byteArray 
=
 System.Text.Encoding.Default.GetBytes ( str );

反过来,byte[]转成string

string
 str 
=
 System.Text.Encoding.Default.GetString ( byteArray );

其它编码方式的,如System.Text.UTF8EncodingSystem.Text.UnicodeEncoding class等;例如:

string类型转成ASCII byte[]:("01" 转成 byte[] = new byte[]{ 0x30, 0x31}

byte
[] byteArray 
=
 System.Text.Encoding.ASCII.GetBytes ( str );

ASCII byte[] 转成string:(byte[] = new byte[]{ 0x30, 0x31} 转成 "01"

string
 str 
=
 System.Text.Encoding.ASCII.GetString ( byteArray );

 

有时候还有这样一些需求:

byte[] 转成原16进制格式的string,例如0xae00cf, 转换成 "ae00cf"new byte[]{ 0x30, 0x31}转成"3031":

        
public
 
static
 
string
 ToHexString ( 
byte
[] bytes ) 
//
 0xae00cf => "AE00CF "
        
{
            
string hexString = string.Empty;
            
if ( bytes != null )
            
{
                StringBuilder strB 
= new StringBuilder ();
                
for ( int i = 0; i < bytes.Length; i++ )
                
{
                    strB.Append ( bytes[i].ToString ( 
"X2" ) );
                }
                hexString 
= strB.ToString ();
            }
            
return hexString;
        }

反过来,16进制格式的string 转成byte[],例如, "ae00cf"转换成0xae00cf,长度缩减一半;"3031" 转成new byte[]{ 0x30, 0x31}:

        
public
 
static
 
byte
[] GetBytes(
string
 hexString, 
out
 
int
 discarded)
        
{
            discarded 
= 0;
            
string newString = "";
            
char c;
            
// remove all none A-F, 0-9, characters
            for (int i=0; i<hexString.Length; i++)
            
{
                c 
= hexString[i];
                
if (IsHexDigit(c))
                    newString 
+= c;
                
else
                    discarded
++;
            }
            
// if odd number of characters, discard last character
            if (newString.Length % 2 != 0)
            
{
                discarded
++;
                newString 
= newString.Substring(0, newString.Length-1);
            }
            
int byteLength = newString.Length / 2;
            
byte[] bytes = new byte[byteLength];
            
string hex;
            
int j = 0;
            
for (int i=0; i<bytes.Length; i++)
            
{
                hex 
= new String(new Char[] {newString[j], newString[j+1]});
                bytes[i] 
= HexToByte(hex);
                j 
= j+2;
            }
            
return bytes;
        }

转载于:https://www.cnblogs.com/noviceliu/archive/2011/12/08/2280472.html

你可能感兴趣的文章
20145303刘俊谦 Exp7 网络欺诈技术防范
查看>>
原生和jQuery的ajax用法
查看>>
iOS开发播放文本
查看>>
20145202马超《java》实验5
查看>>
JQuery 事件
查看>>
main(argc,argv[])
查看>>
在线教育工具—白板系统的迭代1——bug监控排查
查看>>
121. Best Time to Buy and Sell Stock
查看>>
hdu 1005 根据递推公式构造矩阵 ( 矩阵快速幂)
查看>>
安装php扩展
查看>>
百度移动搜索主要有如下几类结果构成
查看>>
Python爬虫面试题170道:2019版【1】
查看>>
JavaBean规范
查看>>
第四阶段 15_Linux tomcat安装与配置
查看>>
NAS 创建大文件
查看>>
学习笔记-模块之xml文件处理
查看>>
接口测试用例
查看>>
面试:用 Java 实现一个 Singleton 模式
查看>>
Sybase IQ导出文件的几种方式
查看>>
案例:手动输入一个字符串,打散放进一个列表,小写字母反序 大写字母保持不变...
查看>>