string怎么转化为byte
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了string怎么转化为byte相关的知识,希望对你有一定的参考价值。
要求输入一个数 保存在命名为response的string里 然后把string转化为byte并且输出 求java帝 刚学不怎么会
String s = "fs123fdsa";//String变量
byte b[] = s.getBytes();//String转换为byte[]
String t = new String(b);//bytep[]转换为String
“字符”是由数字来表示的
先来重新了解一下计算机是如何处理“字符”的,这个原理是必须记住的,特别是在用JAVA写程序的时候,万万不可模糊。计算机把任何东西都用数字来表示,“字符”也不例外。比如要显示一个阿拉伯数字“3”,在pc里,其实并不是仅仅用一个数字3来代表我们要写的“3”,而是以十六进制的0x33来代表,包括放在内存或者是写到文件里,其实都是写着0x33的,不信可以编辑一个文本文件,写一个“3”,然后用ultraEdit看他的原始码。
一切“字符”都必定用数字+编码表表示。
这时候,有一个问题:为什么一定要用0x33来代表“3”呢?而不用0x43来代表呢?或者是直接用0x03来代替?其实用什么来代表都可以,只不过大家都习惯了用ASCII编码表(是美国国家信息交换表)来确定各字符应该是用什么数字代表的。同样,为了表示中国字,我国也指定了中文的编码表,其中最广泛使用的是GB2312。比如中文的“当”字,就是用0xB5,
0xB1这两个八位的数字来表示的。所以如果显示字符的程序不知道一列数字到底是按什么编码表编码的,他也无法去判断到底这些是什么文字。如果随便用一个不对的编码表来处理这些数字,处理出来的字符很可能完全是错的。比如在英文系统上,没有GB2312编码表,送一个0xB5,0xB1,就傻傻的当作ASCII来处理(操作系统通常都有自己默认的编码表),结果显示出来就是两个奇怪的符号,因为这两个字在ASCII表里就是那两个符号。同样在繁体中文系统里,编码表是BIG5,显示出来也是一个奇怪的中文,不是“当”字。
参考技术A
string 转 byte[]的方法:
byte[] midbytes=isoString.getBytes("UTF8");
//为UTF8编码
byte[] isoret = srt2.getBytes("ISO-8859-1");
//为ISO-8859-1编码
其中ISO-8859-1为单字节的编码
byte[]转string的方法:
String isoString = new String(bytes,"ISO-8859-1");
String srt2=new String(midbytes,"UTF-8");
(PS:在网络传输或其它应用中常常有同一的中间件,假设为String类型。因此需要把其它类型的数据转换为中间件的类型。将字符串进行网络传输时,如socket,需要将其在转换为byte[]类型。这中间如果采用用不同的编码可能会出现未成预料的问题,如乱码。)
参考技术B String testStr = "我是中国人";byte b[] = testStr .getBytes();//String转换为byte[]
就这样就可以完成! 参考技术C 网上查到的。。。
String s=你的字符串
byte b = Byte.parseByte(s, 16);
String a = Integer.toHexString(b & 0xFF);
System.out.println(a);
参考资料:http://zhidao.baidu.com/question/93775118.html
参考技术D class Demopublic static void main(String[] args)
String response = new String(args[0]);
byte[] bytes = new byte[];
byte[] bytes = response.getBytes();
for(byte b : bytes)
System.out.print(b);
c#怎么把byte转化成int
三种方法来进行转换。(1) 在.NET Framework类库的System名字空间中有个叫做BitConverter的类,它是专门用来进行这种转换的。主要方法:
1> GetBytes()方法 可以将大多数的简单类型转化为byte[];
2> ToInt()/ToString()等方法 用来将一个byte[]转换成一个基本类型(primitive type)
注意:BitConverter类的行为取决于硬件架构(代码在该硬件架构上运行)的字节顺序(endianness)。
如果你将bit保存为可以在许多不同平台上读取的一个文件格式,那么就会出问题。BitConverter有一个公有的IsLittleEndian字段,你可以查看它是如何运行的,但遗憾的是,你并不能改变它。
(2) 通过手动位移(bit shifting)来进行转换:
b = new byte[] 0xfe,0x5a,0x11,0xfa;
u = (uint)(b[0] | b[1] << 8 |
b[2] << 16 | b[3] << 24);
b[0] = (byte)(u);
b[1] = (byte)(u >> 8);
b[2] = (byte)(u >> 16);
b[3] = (byte)(u >> 24);
用这种方法就可以避免字节顺序问题,因为可以完全控制字节的位置。但是比较麻烦
(3) 如果不介意用不安全的代码——可以通过直接的内存拷贝来实现转换,把一个指向byte array的指针(pointer)转换成一个指向integer类型的指针,然后取它的值(dereference):unsafe
fixed ( byte* pb = b )
u = *((uint*)pb);
同BitConverter一样,这个方法的运行结果取决于代码在何种硬件上运行。
如果要进行很多这种转换,比如说在一个循环中,而且想得到最佳性能,那么建议用最后两种方法中的一种。BitConverter有些慢,尽管区别不大。
转自:http://blog.csdn.net/Enthusiasm/article/details/3464542 参考技术A convert.toint32(byte值)
注意大小写,我这里就偷懒一点了。本回答被提问者采纳
以上是关于string怎么转化为byte的主要内容,如果未能解决你的问题,请参考以下文章