byte[]转为string,再用substring取值,在eclipse和exe里取得值不同

将byte[]  buffer转为 字符串

String messageContent=new String(buffer,0,rlength).toString().trim();

用substring取第八位数字:

String fix1=messageContent.substring(7,8);

这个fix1在eclipse和exe4j打包的exe程序里是完全不同的值。在此记录这个问题,可能是这个byte[]存的数据类型有关系,

buffer前八位存的都是0xff之类的数字,如buffer[0]=(byte) 0xff;

时间: 2024-12-21 18:56:52

byte[]转为string,再用substring取值,在eclipse和exe里取得值不同的相关文章

C#中的Byte,String,Int,Hex之间的转换函数。

/// <summary> Convert a string of hex digits (ex: E4 CA B2) to a byte array. </summary> /// <param name="s"> The string containing the hex digits (with or without spaces). </param> /// <returns> Returns an array of

C# Byte[] 转String 无损转换

转载请注明出处 http://www.cnblogs.com/Huerye/ /// <summary> /// string 转成byte[] /// </summary> /// <param name="hexString"></param> /// <returns>byte[]</returns> private byte[] strToToHexByte(string hexString) { hexS

用java String类的getBytes(String charsetName)和String(byte[] bytes, String charsetName)解决乱码问题

Java中String的数据是如何存储的,查看源代码就可以知道,String的数据是存储在char[] value这样一个成员变量中的,char类型的大小在java中是2个字节 我们还知道,现在普遍使用的unicode版本是UCS-2,就是使用2个字节表示一个字符的unicode版本,这就对上了,java使用的就是UCS-2标准,所以,String中的value中存储的都是一个个数字 比如’你’的unicode编码是4f60,看下面的测试代码 char c = '你'; System.out.p

byte ---&gt; hex String

public static String byte2HexString(byte[] b){ String ret = ""; for(int i=0;i<b.lenght;i++){ String hex = Integer.toHexString(b[i]&0XFF); if(hex.length()==1){ hex = '0'+hex; } ret+=hex.toUpperCase(); } return ret; } 1  1个字节8位 1个BYTE与上2个he

C#将byte[]转换为string

A. 首先列出网上搜索的一些信息: 方法1: System.Text.UnicodeEncoding converter = new System.Text.UnicodeEncoding(); byte[] inputBytes =converter.GetBytes(inputString); string inputString = converter.GetString(inputBytes); 方法2: string inputString = System.Convert.ToBas

String类的substring方法bug

今天再看JDK源码的时候看到了String类的不同版本的实现方式的不同,主要是substring这个方法,JDK6里面的实现方式是: 很明显可以看到,调用String对象的substring方法后指向的对象地址并没有发生改变,只是改变的是偏移量,这样的话在GC阶段就有可能造成内存泄露了. 还好查了一下资料JDK7解决了这个问题,于是赶紧查看了JDK7的源码: 这个里面是通过内存复制的方式重新指向了一个新的地址,解决了内存泄露的隐患

C# byte[]与char[]、string与char[]、byte[] 与 string 互转

1. byte array -> char array Byte[] b=new byte[5]{0x01,0x02,0x03,0x04,0x05}; Char[] c=Encoding.ASCII.GetChars(b); 2. char array -> byte array Char[] c=new char[5]{a,b,c,d,e}; Byte[] b=Encoding.Default.GetBytes(c); Char[] c=new char[5]{a,b,c,d,e}; Byt

freemarker中的substring取子串

1.substring取子串介绍 (1)表达式?substring(from,to) (2)当to为空时,默认的是字符串的长度 (3)from是第一个字符的开始索引,to最后一个字符之后的位置索引 2.举例说明 <#--freemarker中的substring取子串--> ${'EFGHIJKL'?substring(0)} ${'EFGHIJKL'?substring(1)} ${'EFGHIJKL'?substring(2)} ${'EFGHIJKL'?substring(3)} ${'

[转]关于网络通信,byte[]和String的转换问题

最近的项目中要使用到把byte[]类型转换成String字符串然后通过网络发送,但发现发现出去的字符串和获取的字符串虽然是一样的,但当用String的getBytes()的方法得到的byte[]跟原来的byte[]是不一样的. 看如下代码: bytebytes[] = new byte[] { 50, 0, -1, 28, -24 }; String string = new String(bytes); byte[] ret = string.getBytes(); 查看ret的数据发现是50