字节数组与字符串(字符数组)的转换操作

1、默认编码方式转换:

(1)string(char[])转换为byte[]

byte[] byteArr = System.Text.Encoding.Default.GetBytes(char[]);
byte[] byteArr = System.Text.Encoding.Default.GetBytes(string);
byte[] byteArr = System.Text.Encoding.Default.GetBytes(char[], startindex, count);
int count = System.Text.Encoding.Default.GetBytes(char * , count, byte*, startindex);
int count = System.Text.Encoding.Default.GetBytes(char[] , startindex, count, byte[], startindex);
int count = System.Text.Encoding.Default.GetBytes(s , startindex, count, byte[], startindex);

(2)byte[]转换为string(char[])

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

GetString方法和GetChar方法类似,后者将字节数组转换为对应的字符数组。

2、其他编码方式转换

将上述Default更换为ASCII、Unicode、UTF8、UTF7、UTF32等编码方式,然后调用对应方法就可以转换。

string str = "01";
byte[] byteArr = System.Text.Encoding.ASCI.GetBytes(str);

上述代码得到byteArr = {0x30, 0x31},这就是0和1的ASCI编码值。

byte[] byteArr = new byte[]{0x4e, 0x01};
string a = System.Text.Encoding.BigEndianUnicode.GetString(byteArr);

上述代码将unicode编码的第二个汉字“丁”解码赋值给变量a,“丁”的unicode码为\u4e01。

3、Byte[]中的十六进制转换为十六进制字符串

public static string ToHexString ( byte[] bytes )
{
    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;
}  

4、十六进制字符串转换为Byte数组

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;
}  

对于获取到的使用unicode编码的网页或者其他文件,可以使用上述方法将加密后的unicode编码字符串转换为byte数组,然后再使用前面提到的转换方法转换为对应的字符。

时间: 2024-08-04 00:28:03

字节数组与字符串(字符数组)的转换操作的相关文章

字符串字符数组

1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 int main() 6 { 7 8 /* 9 字符串的赋值: 10 给 char* 类型的字符串赋值,可以直接使用 "=" 号 11 给 char[] 类型的字符串赋值,需要使用 strcpy 函数 12 13 字符串的特点: 14 需要明白的一点就是字符串以\0结尾, 没有\0就不是字符串 15 只

字符 字符串 字符数组 字符串指针 指针数组

一.字符串指针.字符数组 1. 字符串指针:字符串指针变量本身是一个变量,用于存放字符串的首地址.而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以'\0'作为串的结束. char *ps="C Language"; 可以写为: char *ps;  #ps字符串指针,是指针,是一个变量, ps="C Language"; #ps为字符串的首地址,利用ps++可遍历字符串,字符串存储在以ps为开始地址的地段连续的内存空间中,并以'\0'作为字符串的结束.

C语言结构体数组内带字符数组初始化和赋值

1.首先定义结构体数组: typedef struct BleAndTspRmtCmd{ char terminal[3]; char note[3]; char rmtCmd[10]; char cmdPropt[24];}; BleAndTspRmtCmd为结构体名,可以通过这个结构体名定义其他结构体变量,struct BleAndTspRmtCmd variable: 或者定义结构体数组变量,struct BleAndTspRmtCmd variable[]: 2.或者定义全局结构体变量,

指针与一维数组和二维数组以及字符串指针数组的学习笔记

废话不多少,直接上代码,关键的东西已经注释了,看注释信息理解即可. 说明:本程序讨论了一维数组和指针的关系,谈论了二维数组和指针之间的关系,讨论了字符串数组指针数组和指针之间的关系,代码中以给出定义的方法和简单的使用,但是有些使用方法并没有列出,如果需要, 请自行加入printf调试即可. 转贴请注明出处,欢迎和我讨论,谢谢. ----------cofin_add #include <stdio.h> void fun(int m, char *((*p)[m])){ int i = 0;

SQL处理数组,字符串转换为数组

原文转载自:http://hi.baidu.com/gagahjt/item/fd081316450f05028ebde413 一.按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果. rtrim(@str)去掉 @str右边的字符 ltrim(@str)去掉左边的字符 ltrim(rtrim(@str))去掉左右空格 charindex  在变量@str中@split的index即索引值 create function Get_

Delphi字符串、PChar与字符数组之间的转换

来自:http://my.oschina.net/kavensu/blog/193719 ----------------------------------------------------------------- var s: string; p: pchar; a: array[1..20] of char; 1.字符串 ---> PChar p := PChar(s); 2.PChar ---> 字符串 s := p; 3.PChar ---> 字符数组 StrCopy(@a

字符串和字符数组

  1.字符串 严格意义上来说,C语言并没有字符串原生的字符串的类型,而是通过字符指针来实现的:char *p = "LINUX";.而对于其他的高级语言来说,比如C++的就存在字符串类型: string p1 = "I LOVE LINUX"; . 字符串在内存中其实就多个字节组成的,且地址都是连续的:指针指向字符串的的头部:字符串的结尾是以"\0"(是真能整的零)作为字符串结束的标志. "\0" 的理解: \0 是一个 A

c语言字符数组与字符串的使用详解

转自:http://www.jb51.net/article/37456.htm 1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大于数组长度,则按语法错误处理:若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\0' ). 2.

字符、字符串、数组

1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ','h','a','p','p','y'}; 即把10个字符分别赋给str[0]到str[9]10个元素 如果花括号中提供的字符个数大于数组长度,则按语法错误处理:若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\0' ). 2.字符数组与字符串 在c语言中,将字符串作为字符数组来处理.(c++中不是)

C语言-字符串(单个字符)和字符数组

一.字符串(单个字符)和字符数组的定义 1.单个字符的定义 char i = ‘x’ (单个字符的定义) 字符串创建后为常量无法修改 2.字符数组的定义 char i [4]=”xxxx”; char i []=”xxxx”; char i [4]={‘x’’x’’x’’x’}; 其中定义的数组的元素数要比实际赋值的数量多一,用于存放\0位置 字符数组只有在定义时才能将整个字符串一次性地赋值给它,一旦定义完了,就只能一个字符一个字符地赋值了. 二字符串(单个字符)和字符数组输入 1.scanf函