CSharp16进制、字符串、字节数组之间转换

CSharp16进制、字符串、字节数组之间转换
CSharp16进制、字符串、字节数组之间转换

///

///字符串转16进制字节数组

///

///

///

private static byte[] strToToHexByte(string hexString)

{

hexString = hexString.Replace(" ", "");

if ((hexString.Length % 2) != 0)

hexString += " ";

byte[] returnBytes = new byte[hexString.Length / 2];

for (int i = 0; i < returnBytes.Length; i++)

returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);

return returnBytes;

}

///

///字节数组转16进制字符串

///

///

///

public static string byteToHexStr(byte[] bytes)

{

string returnStr = "";

if (bytes != null)

{

for (int i = 0; i < bytes.Length; i++)

{

returnStr += bytes[i].ToString("X2");

}

}

return returnStr;

}

///

///从汉字转换到16进制

///

///

///编码,如"utf-8","gb2312"

///是否每字符用逗号分隔

///

public static string ToHex(string s, string charset, bool fenge)

{

if ((s.Length % 2) != 0)

{

s += " ";//空格

//throw new ArgumentException("s is not valid chinese string!");

}

System.Text.Encoding chs =

System.Text.Encoding.GetEncoding(charset);

byte[] bytes = chs.GetBytes(s);

string str = "";

for (int i = 0; i < bytes.Length; i++)

{

str += string.Format("{0:X}", bytes[i]);

if (fenge && (i != bytes.Length - 1))

{

str += string.Format("{0}", ",");

}

}

return str.ToLower();

}

///

///从16进制转换成汉字

///

///

///编码,如"utf-8","gb2312"

///

public static string UnHex(string hex, string charset)

{

if (hex == null)

throw new ArgumentNullException("hex");

hex = hex.Replace(",", "");

hex = hex.Replace("\n", "");

hex = hex.Replace("\\", "");

hex = hex.Replace(" ", "");

if (hex.Length % 2 != 0)

{

hex += "20";//空格

}

// 需要将 hex 转换成 byte 数组。

byte[] bytes = new byte[hex.Length / 2];

for (int i = 0; i < bytes.Length; i++)

{

try

{

// 每两个字符是一个 byte。

bytes[i] = byte.Parse(hex.Substring(i * 2, 2), System.Globalization.NumberStyles.HexNumber);

}

catch

{

// Rethrow an exception with custom message.

throw new ArgumentException("hex is not a valid hex number!", "hex");

}

}

System.Text.Encoding chs =

System.Text.Encoding.GetEncoding(charset);

return chs.GetString(bytes);

}

图片与字节数组相互转换的方法

图片与字节数组相互转换的方法 图片与字节数组相互转换的方法 aspx.cs   using System;using System.IO; using System.Drawing; using System.Drawing.Imaging;public partial class _2Stream : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) {}protected void FileToStream(object sender, EventArgs e) { //将JPG图片转化成字节数组 Image image = Image.FromFile("E:/1.jpg"); //或者使用Server.MapPath MemoryStream ms =

new MemoryStream(); image.Save(ms, ImageFormat.Jpeg); ms.Flush(); ms.Seek(0, SeekOrigin.Begin); byte[] buffer = new byte[ms.Length]; ms.Read(buffer, 0, (int)ms.Length);//遍历字节数组 for (int i = 0; i < buffer.LongLength; i++) { message.Text += buffer[i].ToString(); }//将字节数组转化成图像文件(自定义格式)并保存MemoryStream ms2 = new MemoryStream(buffer, 0, buffer.Length); ms2.Seek(0, SeekOrigin.Begin); Image image2 = Image.FromStream(ms2); image2.Save("E:\\2.gif", ImageFormat.Gif);

java整型数与网络字节序的 byte[] 数组转换关系

java整型数与网络字节序的byte[] 数组转换关系 工作项目需要在java和c/c++之间进行socket通信,socket通信是以字节流或者字节包进行的,socket发送方须将数据转换为字节流或者字节包,而接收方则将字节流和字节包再转换回相应的数据类型。如果发送方和接收方都是同种语言,则一般只涉及到字节序的调整。而对于java和c/c++的通信,则情况就要复杂一些,主要是因为java中没有unsigned类型,并且java和c在某些数据类型上的长度不一致。 本文就是针对这种情况,整理了java数据类型和网络字节流或字节包(相当于java的byte 数组)之间转换方法。实际上网上这方面的资料不少,但往往不全,甚至有些有错误,于是就花了点时间对java整型数和网络字节序的byte[]之间转换的各种情况做了一些验证和整理。整理出来的函数如下: public class ByteConvert { // 以下是整型数和网络字节序的byte[] 数组之间的转换 public static byte[] longToBytes(long n) { byte[] b = new byte[8]; b[7] = (byte) (n & 0xff); b[6] = (byte) (n >> 8 & 0xff); b[5] = (byte) (n >> 16 & 0xff); b[4] = (byte) (n >> 24 & 0xff); b[3] = (byte) (n >> 32 & 0xff); b[2] = (byte) (n >> 40 & 0xff); b[1] = (byte) (n >> 48 & 0xff); b[0] = (byte) (n >> 56 & 0xff); return b; } public static void longT oBytes( long n, byte[] array, int offset ){ array[7+offset] = (byte) (n & 0xff); array[6+offset] = (byte) (n >> 8 & 0xff); array[5+offset] = (byte) (n >> 16 & 0xff); array[4+offset] = (byte) (n >> 24 & 0xff); array[3+offset] = (byte) (n >> 32 & 0xff); array[2+offset] = (byte) (n >> 40 & 0xff); array[1+offset] = (byte) (n >> 48 & 0xff); array[0+offset] = (byte) (n >> 56 & 0xff); } public static long bytesToLong( byte[] array ) { return ((((long) array[ 0] & 0xff) << 56) | (((long) array[ 1] & 0xff) << 48)

C#数组、字节数组、转换等

C#数组、字节数组、转换等 在System名称空间里面有许多跟Array操作相关的类。其中System.Array 类里面就提供了以下常用的方法: BinarySearch: 使用二进制搜索算法在一维的排序Array中搜索值。 Copy: 将一个Array的一部分元素复制到另一个Array中,并根据需要执行类型强制转换和装箱。 CopyTo: 将当前一维Array的所有元素复制到指定的一维Array中。 Resize: 将数组的大小更改为指定的新大小。 Sort: 对一维Array对象中的元素进行排序。 与大多数类不同,Array提供CreateInstance方法,以便允许后期绑定访问,而不是提供公共构造函数。 Array.Copy方法不仅可在同一类型的数组之间复制元素,而且可在不同类型的标准数组之间复制元素;它会自动处理强制类型转换。有些方法,如CreateInstance、Copy、CopyTo、GetValue和SetValue,提供重载(接受64位整数作为参数),以适应大容量数组。LongLength和GetLongLength返回指示数组长度的64位整数。在执行需要对Array进行排序的操作(如BinarySearch)之前,必须对Array进行排序。

ArrayList跟Array不同,前者是集合对象,ArrayList的ToArray方法可以直接将ArrayList里面的全部元素导出到一个数组里,而不需用循环逐个元素地复制到一个数组。 ToArray的使用方法如下: ArrayList ay = new ArrayList(); ay.Add("sheep"); ay.Add("cat"); ay.Add("dog"); string[] al= (string[])ay.ToArray(typeof(string)); Console.WriteLine(al[0]); 关键的地方在于ToArray的参数,这里应该用反射中的typeof获取arraylist 里面元素的原始数据类型。 在数组中有一种比较特殊的: 字节数组,即byte[]。内存、文件中的数据都是以字节数组的形式储存的,如果程序需要对数据进行操作的话,或多或少都会使用到byte[]。 对于byte[]跟其他类型的相互转换问题,在C++中,使用Memorycopy函数即可完成,虽然在C#里面也有类似MemoryCopy的函数: Buffer.BlockCopy,但由于强类型的特性,在C#里它并实现不了字节数组跟其他类型转换的功能。 为了解决这个问题,需要手工写将其他类型的数据通过位运算和逻辑运算而得到字节数组。如下面的代码: //整型转换为字节数组 int i = ; //对应的十六进制是:0012D687

byte数组转化成16进制字符串用法分析

byte数组转化成16进制字符串,C#中的overload,overwrite,override的区别 C++ 实现Single Sever Simulation AFNetworking 更改请求时间iOS chrome插件,二维码自动生成,C编程方式进行控制台输入 maven jar shade assembly配置[XML] Maven pom.xml public: double angle; QPen ang_info_pen; }; #endif [文件] MainWindow.cpp ~ 28KB [文件] MainWindow.h ~ 3KB //AngularJS 绑定鼠标左键、右键单击事件 //API权限设计总结系统sign验证规则 //Apriopri算法的简单实现 #ifndef __MAINWINDOW_H__ #define __MAINWINDOW_H__ #include "ui_MainWindow.h" #include "Shape.h" #include class CDockWin; class CDrawWin:public QMainWindow, public Ui_Mainwin { Q_OBJECT public: CDrawWin(QWidget *parent = NULL); // 画图状态定义 enum DRAW_STATUS{ // 无画图状态 DRAW_STATUS_NONE = 0, // 绘画当中 DRAW_STATUS_DRAWING, // 移动 DRAW_STATUS_DRAG, // 改变图元 DRAW_STATUS_CHANGE }; // 当前的菜单选择 enum MENU_STATUS{

字符串和字符数组之间的转换

字符串和字符数组之间的转换 2010-11-02 16:53:00| 分类: |举报|字号订阅 字符串类提供了一个void ToCharArray() 方法,该方法可以实现字符串到字符数组的转换。如下例: private void TestStringChars() { string str = "mytest"; char[] chars = (); = ""; "Length of \"mytest\" is " + + "\n"); "Length of char array is " + + "\n"); "char[2] = " + chars[2] + "\n"); } 例中以对转换转换到的字符数组长度和它的一个元素进行了测试,结果如下: Length of "mytest" is 6 Length of char array is 6 char[2] = t 可以看出,结果完全正确,这说明转换成功。那么反过来,要把字符数组转换成字符串又该如何呢? 我们可以使用类的构造函数来解决这个问题。类有两个构造函数是通过字符数组来构造的,即 String(char[]) 和String[char[], int, int)。后者之所以多两个参数,是因为可以指定用字符数组中的哪一部分来构造字符串。而前者则是用字符数组的全部元素来构造字符串。我们以前者为例, 在 TestStringChars() 函数中输入如下语句: char[] tcs = {'t', 'e', 's', 't', ' ', 'm', 'e'}; string tstr = new String(tcs); "tstr = \"" + tstr + "\"\n"); 运行结果输入 tstr = "test me",测试说明转换成功。 实际上,我们在很多时候需要把字符串转换成字符数组只是为了得到该字符串中的某个字符。如果只是为了这个目的,那大可不必兴师动众的去进行转换,我们

inputStream和String,Byte之间的转换

1.import java.io.ByteArrayInputStream; 2.import java.io.ByteArrayOutputStream; 3.import java.io.IOException; 4.import java.io.InputStream; 5. 6./** 7. * 8. * @author Andy.Chen 9. * @mail Chenjunjun.ZJ@https://www.360docs.net/doc/e23278538.html, 10. * 11. */ 12.public class InputStreamUtils { 13. 14. final static int BUFFER_SIZE = 4096; 15. 16. /** 17. * 将InputStream转换成String 18. * @param in InputStream 19. * @return String 20. * @throws Exception 21. * 22. */ 23. public static String InputStreamTOString(InputStream in) throws Ex ception{ 24. 25. ByteArrayOutputStream outStream = new ByteArrayOutputStream(); 26. byte[] data = new byte[BUFFER_SIZE]; 27. int count = -1; 28. while((count = in.read(data,0,BUFFER_SIZE)) != -1) 29. outStream.write(data, 0, count); 30. 31.data = null; 32. return new String(outStream.toByteArray(),"ISO-8859-1"); 33. } 34. 35. /** 36. * 将InputStream转换成某种字符编码的String 37. * @param in 38. * @param encoding 39. * @return 40. * @throws Exception 41. */

short,int,long与byte数组之间的转换

1. 2.package com.test; 3. 4.import java.nio.ByteBuffer; 5. 6.public class ByteUtil { 7. 8./** 9. * @param args 10. */ 11. public static void main(String[] args) { 12. test2(); 13. } 14. public static void test2() 15. { 16. short s = -20; 17. byte[] b = new byte[2]; 18. putReverseBytesShort(b, s, 0); 19. ByteBuffer buf = ByteBuffer.allocate(2); 20. buf.put(b); 21. buf.flip(); 22. System.out.println(getReverseBytesShort(b, 0)); 23. System.out.println(Short.reverseBytes(buf.getShort())); 24. System.out.println("***************************"); 25. int i = -40; 26. b = new byte[4]; 27. putReverseBytesInt(b, i, 0); 28. buf = ByteBuffer.allocate(4); 29. buf.put(b); 30. buf.flip(); 31. System.out.println(getReverseBytesInt(b, 0)); 32. System.out.println(Integer.reverseBytes(buf.getInt())); 33. System.out.println("***************************"); 34. long l = -50; 35. b = new byte[8]; 36. putReverseBytesLong(b, l, 0); 37. buf = ByteBuffer.allocate(8); 38. buf.put(b); 39. buf.flip(); 40. System.out.println(getReverseBytesLong(b, 0)); 41. System.out.println(Long.reverseBytes(buf.getLong())); 42. System.out.println("***************************"); 43. } 44. public static void test1()

JAVA二进制字节数组字符十六进制BCD编码转换

JAVA二进制字节数组字符十六进制BCD编码转换; import java.io.*; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class DataConverter { /* 把16进制字符串转换成字节数组 * @param hex * @return */ public static byte[] hexStringToByte(String hex) { int len = (hex.length() / 2); byte[] result = new byte[len]; char[] achar = hex.toCharArray(); for (int i = 0; i < len; i++) { int pos = i * 2; result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1])); } return result; } private static byte toByte(char c) { byte b = (byte) "0123456789ABCDEF".indexOf(c); return b; } /** *//** * 把字节数组转换成16进制字符串 * @param bArray * @return */ public static final String bytesToHexString(byte[] bArray) { StringBuffer sb = new StringBuffer(bArray.length); String sTemp; for (int i = 0; i < bArray.length; i++) { sTemp = Integer.toHexString(0xFF & bArray[i]); if (sTemp.length() < 2) sb.append(0); sb.append(sTemp.toUpperCase()); }

JAVA里面关于byte数组和String之间的转换问题

JAVA里面关于byte数组和String之间的转换问题把byte转化成string,必须经过编码。 例如下面一个例子: import java.io.UnsupportedEncodingException; public class test{ public static void main(String g[]) { String s = "12345abcd"; byte b[] = s.getBytes(); String t = b.toString(); System.out.println(t); } } 输出字符串的结果和字符串s不一样了. 经过以下方式转码就可以正确转换了: public class test{ public static void main(String g[]) { String s = "12345abcd"; byte b[] = s.getBytes(); try { String t = new String(b); System.out.print(t); } catch (Exception e) { e.printStackTrace(); } } } String str = "String"; byte[] byte1 = str.getBytes(); String str1 = new String(byte1); byte[] byte2 = str1.getBytes(); String str2 = new String(byte2); System.out.println("str<<<" + str); System.out.println("byte1<<<" + byte1); System.out.println("str1<<<" + str1); System.out.println("byte2<<<" + byte2); System.out.println("str2<<<" + str2); ------------------------------------- 输出结果 str<<

C#中将byte数组转换为8bit灰度图像

类似的文章在网上可以看到不少,但多多少少都存在一些问题。这两天做实验室的项目用到这个功能,我从头把它整理了一遍。 在看代码之前,首先解释几个问题。 byte数组存放的是图像每个像素的灰度值,byte类型正好是从0~255,存放8bit灰度图像的时候,一个数组元素就是一个像素的灰度值。仅有这个数组还不足以恢复出原来的图像,还必须事先知道图像的长、宽值; 创建Bitmap类的时候必须指定PixelFormat为Format8bppIndexed,这样才最符合图像本身的特性; Bitmap类虽然提供了GetPixel()、SetPixel()这样的方法,但我们绝对不能用这两个方法来进行大规模的像素读写,因为它们的性能实在很囧; 托管代码中,能不用unsafe就尽量不用。在.NET 2.0中已经提供了BitmapData类及其LockBits()、UnLockBits()操作,能够安全地进行内存读写; 图像的width和它存储时的stride是不一样的。位图的扫描线宽度一定是4的倍数,因此图像在内存中的大小并不是它的显示大小; Format8bppIndexed类型的PixelFormat是索引格式,其调色板并不是灰度的而是伪彩,因此需要我们对其加以修改。 代码如下,解说写在注释里了: 1 ///

2 /// 将一个字节数组转换为8bit灰度位图 3 /// 4 /// 显示字节数组 5 /// 图像宽度 6 /// 图像高度 7 /// 位图 8 public static Bitmap ToGrayBitmap(byte[] rawValues, int width, int height) 9 { 10 //// 申请目标位图的变量,并将其内存区域锁定 11 Bitmap bmp = new Bitmap(width, height, PixelFormat.Format8bppIndexed); 12 BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, width, height), 13 ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed); 14 15 //// 获取图像参数

javascript字节数组转换为16进制

javascript字节数组转换为16进制/** * byte数组转换成16进制字符串 * @param src * @return */ bytesToHexString(byte[] src){ public static String StringBuilder stringBuilder = new StringBuilder(); if (src == null || src.length <= 0) { return null; } for (int i = 0; i < src.length; i++) { int v = src[i] & 0xFF; String hv = Integer.toHexString(v); if (hv.length() < 2) { stringBuilder.append(0); } stringBuilder.append(hv); } return stringBuilder.toString(); } /** * 根据文件流读取图片文件真实类型 * @param is

* @return */ public static String getTypeByStream(FileInputStream is){ byte[] b = new byte[4]; try { is.read(b, 0, b.length); } catch (IOException e) { e.printStackTrace(); } String type = bytesToHexString(b).toUpperCase(); if(type.contains("FFD8FF")){ return "jpg"; }else if(type.contains("89504E47")){ return "png"; }else if(type.contains("47494638")){ return "gif"; }else if(type.contains("49492A00")){ return "tif"; }else if(type.contains("424D")){ return "bmp"; } return type; } public static void main(String[] args) throws Exception {

Java中byte与int的转换

Java中byte与int的转换 最近在做些与编解码相关的事情,又遇到了byte和int的转换,看着那些关于反码、补码的说明依旧头疼,还是记下些实用的方法吧。 int -> byte 可以直接使用强制类型转换: byte b = (byte) aInt; 这个操作是直接截取int中最低一个字节,如果int大于255,则值就会变得面目全非了。对于通过InputStream.read()获取的int,可采用这个方法将值还原。 byte -> int 这里有两种情况,一种是要求保持值不变,例如进行数值计算,可采用强制类型转换:int i = (int) aByte; 另一种是要求保持最低字节中各个位不变,3个高字节全部用0填充,例如进行编解码操作,则需要采用位操作:int i = b & 0xff; int InputStream.read() 该函数返回一个int类型,范围从0至255,如果到达流末尾,返回-1。通过ByteArrayInputStream的源码可以看到是如何从byte转到int public synchronized int read() { return (pos < count) ? (buf[pos++] & 0xff) : -1; }

int <-> byte[] 代码转自:java int 与byte转换 public static byte[] toByteArray(int iSource, int iArrayLen) { byte[] bLocalArr = new byte[iArrayLen]; for (int i = 0; (i < 4) && (i < iArrayLen); i++) { bLocalArr[i] = (byte) (iSource >> 8 * i & 0xFF); } return bLocalArr; } // 将byte数组bRefArr转为一个整数,字节数组的低位是整型的低字节位public static int toInt(byte[] bRefArr) { int iOutcome = 0; byte bLoop; for (int i = 0; i < bRefArr.length; i++) { bLoop = bRefArr[i]; iOutcome += (bLoop & 0xFF) << (8 * i); } return iOutcome; }

java中long,int,short与byte数组之间的转换

//long类型转成byte数组 public static byte[] longToByte(long number) { long temp = number; byte[] b = new byte[8]; for (int i = 0; i < b.length; i++) { b[i] = new Long(temp & 0xff).byteValue();// 将最低位保存在最低位 temp = temp >> 8; // 向右移8位 } return b; } //byte数组转成long public static long byteToLong(byte[] b) { long s = 0; long s0 = b[0] & 0xff;// 最低位 long s1 = b[1] & 0xff; long s2 = b[2] & 0xff; long s3 = b[3] & 0xff; long s4 = b[4] & 0xff;// 最低位 long s5 = b[5] & 0xff; long s6 = b[6] & 0xff; long s7 = b[7] & 0xff; // s0不变 s1 <<= 8; s2 <<= 16; s3 <<= 24; s4 <<= 8 * 4; s5 <<= 8 * 5; s6 <<= 8 * 6; s7 <<= 8 * 7; s = s0 | s1 | s2 | s3 | s4 | s5 | s6 | s7; return s; } /** * 注释:int到字节数组的转换! * * @param number * @return */ public static byte[] intToByte(int number) { int temp = number;

字符串和字符数组之间的转换

字符串和字符数组之间地转换 分类:工具举报字号订阅 字符串类提供了一个 () 方法,该方法可以实现字符串到字符数组地转换.如下例: () { ""; [] (); ""; (" \"\" ""\"); (" ""\"); ("[] "[] "\"); } b5E2R。 例中以对转换转换到地字符数组长度和它地一个元素进行了测试,结果如下: "" [] 可以看出,结果完全正确,这说明转换成功.那么反过来,要把字符数组转换成字符串又该如何呢?我们可以使用类地构造函数来解决这个问题.类有两 个构造函数是通过字符数组来构造地,即 ([]) 和[[], , ).后者之所以多两个参数,是因为可以指定用字符数组中地哪一部分来构造字符串.而前者则是用字符数组地全部元素来构造字符串.我们以前者为例,在 () 函数中输入如下语句: p1Ean。 [] {'', '', '', '', ' ', '', ''}; (); (" \"" "\"\");DXDiT。 运行结果输入" ",测试说明转换成功.实际上,我们在很多时候需要把 字符串转换成字符数组只是为了得到该字符串中地某个字符.如果只是为了这个目地,那大可不必兴师动众地去进行转换,我们只需要使用地 [] 运算符就可 以达到目地.请看下例,再在() 函数中加入如如下语名:RTCrp。 []; ("\"" "\"[] "()); 正确地输出是 " "[] ,经测试,输出正确.

. 字符串和字节数组之间地转换 如果还想从类中找到方法进行字符串和字节数组之间地转换,恐怕你会失望了.为了进行这样地转换,我们不得不借助另一个类:.该类提供了 [] () 方法将字符串转换成字节数组,还提供了([]) 方法将字节数组转换成字符串.5PCzV。类似乎没有可用地构造函数,但我们可以找到几个默认地,即 (获取系统地当前代码页地编码)、(获取位字符集地编码)、(获取采用字节顺序地格式地编码)、(获取格式地编码)、(获取格式地编码) 等.这里主要说说和用于转换地区别.jLBHr。 在字符串转换到字节数组地过程中,会将每个单字节字符,如半角英文,转换成个字节,而把每个双字节字符,如汉字,转换成个字节.而则会将它们都转换成两个字节.我们可以通过下列简单地了解一下转换地方法,以及使 用和地区别:xHAQX。 () { "语言"; [] (); [] (); "", ""; ( ) { ("") " "; } ( ) { ("") " "; } ""; (" ""\"); ( "\"); (" ""\"); ( "\"); } LDAYt。 运行结果如下,不说详述,相信大家已经明白了.

C#数字转字节数组类BitConverter

BitConverter用于基础数据类型与字节数组相互转换 在vs2005中,新建控制台应用程序TestBitConvert,测试静态类BitConverter的使用情况。 ★源代码: using System; using System.Collections.Generic; using System.Text; namespace TestBitConvert { class Program { static void Main(string[] args) { Console.WriteLine("boolean占1个字节"); bool[] bl = new bool[] { true, false }; for (int j = 0; j < bl.Length; j++) { byte[] bufferC = BitConverter.GetBytes(bl[j]); string s = string.Empty; for (int i = 0; i < bufferC.Length; i++) { s += (s.Length == 0 ? "" : ",") + bufferC[i]; } Console.WriteLine("[{0}]转换为字节数组为:{1}", bl[j], s); } Console.WriteLine(); Console.WriteLine("字符转换为2个字节.(C#中字符时unicode编码,占2个字节)"); char[] ch = new char[] { 'A', '我' }; for (int j = 0; j < ch.Length; j++) { byte[] bufferC = BitConverter.GetBytes(ch[j]); string s = string.Empty; for (int i = 0; i < bufferC.Length; i++) { s += (s.Length == 0 ? "" : ",") + bufferC[i]; } Console.WriteLine("字符[{0}]转换为字节数组为:{1}", ch[j], s); } Console.WriteLine(); Console.WriteLine("double类型转换为8个字节");

C# 16进制与字符串、字节数组之间的转换

1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制 Console.WriteLine("十进制166的二进制表示: "+Convert.ToString(166, 2)); //十进制转八进制 Console.WriteLine("十进制166的八进制表示: "+Convert.ToString(166, 8)); //十进制转十六进制 Console.WriteLine("十进制166的十六进制表示: "+Convert.ToString(166, 16)); //二进制转十进制 Console.WriteLine("二进制111101 的十进制表示: "+Convert.ToInt32("111101", 2)); //八进制转十进制 Console.WriteLine("八进制44 的十进制表示: "+Convert.ToInt32("44", 8)); //十六进制转十进制 Console.WriteLine("十六进制CC的十进制表示: "+Convert.ToInt32("CC", 16)); 2.在串口通讯过程中,经常要用到16进制与字符串、字节数组之间的转换 // private string StringToHexString(string s,Encoding encode) { byte[] b = encode.GetBytes(s);//按照指定编码将string编程字节数组 string result = string.Empty; for (int i = 0; i < b.Length; i++)//逐字节变为16进制字符,以%隔开 { result += "%"+Convert.ToString(b[i], 16); } return result; } private string HexStringToString(string hs, Encoding encode) { //以%分割字符串,并去掉空字符 string[] chars = hs.Split(new char[]{'%'},StringSplitOptions.RemoveEmptyEntries); byte[] b = new byte[chars.Length]; //逐个字符变为16进制字节数据 for (int i = 0; i < chars.Length; i++) { b[i] = Convert.ToByte(chars[i], 16); } //按照指定编码将字节数组变为字符串

【IT专家】在C#中将字节数组转换为短数组

本文由我司收集整编,推荐下载,如有疑问,请与我司联系 在C#中将字节数组转换为短数组 2009/07/09 28406 I’m currently reading a file and wanted to be able to convert the array of bytes obtained from the file into a short array. 我正在读取一个文件,并希望能够将从文件中获取的字节数组转换为一个短数 组。 How would I go about doing this? 我该怎么做呢? 15 One possibility is using Enumerable.Select: 一种可能是使用Enumerable.Select: byte[] bytes;var shorts = bytes.Select(b = (short)b).ToArray(); Another is to use Array.ConvertAll: 另一种是使用Array.ConvertAll: byte[] bytes;var shorts = Array.ConvertAll(bytes, b = (short)b); 49 Use Buffer.BlockCopy. 使用Buffer.BlockCopy。 Create the short array at half the size of the byte array, and copy the byte data in: 以字节数组大小的一半创建短数组,并将字节数据复制到: short[] sdata = new short[(int)Math.Ceiling(data.Length / 2)];Buffer.BlockCopy(data, 0, sdata, 0, data.Length); It is the fastest method by far. 这是迄今为止最快的方法。 2 A shorthard is a compound of two bytes. If you are writing all the shorts to the file as true shorts then those conversions are wrong. You must use two bytes to get the true short value, using something like: shorthard 是两个字节的复合。如果你把所有短片都写成真正的短片,那么这些转

C#字节数组转换成字符串

C#字节数组转换成字符串 如果还想从 System.String 类中找到方法进行字符串和字节数组之间的转换,恐怕你会失望了。为了进行这样的转换,我们不得不借助另一个类:System.Text.Encoding。该类提供了bye[] GetBytes(string) 方法将字符串转换成字节数组,还提供了string GetString(byte[]) 方法将C#字节数组转换成字符串。 System.Text.Encoding 类似乎没有可用的构造函数,但我们可以找到几个默认的Encoding,即Encoding.Default(获取系统的当前ANSI 代码页的编码)、Encoding.ASCII(获取7 位ASCII 字符集的编码)、Encoding.Unicode(获取采用Little-Endian 字节顺序的 Unicode 格式的编码)、Encoding.UTF7(获取 UTF-7 格式的编码)、Encoding.UTF8(获取 UTF-8 格式的编码) 等。这里主要说说 Encoding.Default 和Encoding.Unicode 用于转换的区别。 在字符串转换到字节数组的过程中,Encoding.Default 会将每个单字节字符,如半角英文,而把每个双字节字符,如汉字。而 Encoding.Unicode 则会将它们都转换成两个字节。我们可以通过下列简单的了解一下转换的方法,以及使用Encoding.Default 和Encodeing.Unicode 的区别: private void TestStringBytes() { string s = "C#语言"; byte[] b1 = System.Text.Encoding.Default.GetBytes(s); byte[] b2 = System.Text.Encoding.Unicode.GetBytes(s); string t1 = "", t2 = ""; foreach (byte b in b1) { t1 += b.ToString("") + " "; } foreach (byte b in b2) { t2 += b.ToString("") + " "; } this.textBox1.Text = ""; this.textBox1.AppendText("b1.Length = " + b1.Length + "\n"); this.textBox1.AppendText(t1 + "\n"); this.textBox1.AppendText("b2.Length = " + b2.Length + "\n"); this.textBox1.AppendText(t2 + "\n"); } 运行结果如下,不说详述,相信大家已经明白了。 b1.Length = 6 67 35 211 239 209 212 b2.Length = 8 67 0 35 0 237 139 0 138 将C#字节数组转换成字符串,使用 Encoding 类的 string GetString(byte[]) 或 string GetString(byte[], int, int) 方法,具体使用何种 Encoding 还是由编码决定。在

相关主题
相关文档
最新文档