123456前6个字节的十六进制文本到字节集制编码

在密码可以编辑控件输入123456,同样发现变量为1x7char,不是6个字符是什么原因? - Matlab论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
在密码可以编辑控件输入123456,同样发现变量为1x7char,不是6个字符是什么原因?
11:12:29  
我写了个密码登录系统,当启动后,假如在用户名可编辑控件里输入dafei,用get函数获取String,我用断点调试时,发现变量为1x8char,明明只有5个字符啊,而我在密码可以编辑控件输入123456,同样发现变量为1x7char,不是6个字符,各位大神,请指教一下。
高级工程师
16:47:23  
21:53:44  
待高人解答
11:25:44  
解决了,在编辑之前用代码要把string初始化,一般清空控件string。
11:25:56  
待高人解答
解决了,在编辑之前用代码要把string初始化,一般清空控件string。
高级工程师
14:44:21  
解决了,在编辑之前用代码要把string初始化,一般清空控件string。
原来如此,受教了
Powered byjava二进制,字节数组,字符,十六进制,BCD编码转换 00:17/** *//**&
& & * 把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 & i++) {&
& &&&int pos = i * 2;&
& &&&result&= (byte) (toByte(achar[pos]) && 4 | toByte(achar[pos + 1]));&
private static byte toByte(char c) {&
& & byte b = (byte) &ABCDEF&.indexOf(c);&
/** *//**&
& & * 把字节数组转换成16进制字符串&
& & * @param bArray&
& & * @return&
public static final String bytesToHexString(byte[] bArray) {&
& & StringBuffer sb = new StringBuffer(bArray.length);&
& & String sT&
& & for (int i = 0; i & bArray. i++) {&
& &&&sTemp = Integer.toHexString(0xFF & bArray);&
& &&&if (sTemp.length() & 2)&
& && &sb.append(0);&
& &&&sb.append(sTemp.toUpperCase());&
& & return sb.toString();&
/** *//**&
& & * 把字节数组转换为对象&
& & * @param bytes&
& & * @return&
& & * @throws IOException&
& & * @throws ClassNotFoundException&
public static final Object bytesToObject(byte[] bytes) throws IOException, ClassNotFoundException {&
& & ByteArrayInputStream in = new ByteArrayInputStream(bytes);&
& & ObjectInputStream oi = new ObjectInputStream(in);&
& & Object o = oi.readObject();&
& & oi.close();&
/** *//**&
& & * 把可序列化对象转换成字节数组&
& & * @param s&
& & * @return&
& & * @throws IOException&
public static final byte[] objectToBytes(Serializable s) throws IOException {&
& & ByteArrayOutputStream out = new ByteArrayOutputStream();&
& & ObjectOutputStream ot = new ObjectOutputStream(out);&
& & ot.writeObject(s);&
& & ot.flush();&
& & ot.close();&
& & return out.toByteArray();&
public static final String objectToHexString(Serializable s) throws IOException{&
& & return bytesToHexString(objectToBytes(s));&
public static final Object hexStringToObject(String hex) throws IOException, ClassNotFoundException{&
& & return bytesToObject(hexStringToByte(hex));&
/** *//**&
& & * @函数功能: BCD码转为10进制串(阿拉伯数据)&
& & * @输入参数: BCD码&
& & * @输出结果: 10进制串&
public static String bcd2Str(byte[] bytes){&
& & StringBuffer temp=new StringBuffer(bytes.length*2);&
& & for(int i=0;i&bytes.i++){&
& &&&temp.append((byte)((bytes& 0xf0)&&&4));&
& &&&temp.append((byte)(bytes& 0x0f));&
& & return temp.toString().substring(0,1).equalsIgnoreCase(&0&)?temp.toString().substring(1):temp.toString();&
/** *//**&
& & * @函数功能: 10进制串转为BCD码&
& & * @输入参数: 10进制串&
& & * @输出结果: BCD码&
public static byte[] str2Bcd(String asc) {&
& & int len = asc.length();&
& & int mod = len % 2;&
& & if (mod != 0) {&
& &&&asc = &0& +&
& &&&len = asc.length();&
& & byte abt[] = new byte[len];&
& & if (len &= 2) {&
& &&&len = len / 2;&
& & byte bbt[] = new byte[len];&
& & abt = asc.getBytes();&
& & int j,&
& & for (int p = 0; p & asc.length()/2; p++) {&
& &&&if ( (abt[2 * p] &= '0') && (abt[2 * p] &= '9')) {&
& && &j = abt[2 * p] - '0';&
& &&&} else if ( (abt[2 * p] &= 'a') && (abt[2 * p] &= 'z')) {&
& && &j = abt[2 * p] - 'a' + 0x0a;&
& &&&} else {&
& && &j = abt[2 * p] - 'A' + 0x0a;&
& &&&if ( (abt[2 * p + 1] &= '0') && (abt[2 * p + 1] &= '9')) {&
& && &k = abt[2 * p + 1] - '0';&
& &&&} else if ( (abt[2 * p + 1] &= 'a') && (abt[2 * p + 1] &= 'z')) {&
& && &k = abt[2 * p + 1] - 'a' + 0x0a;&
& &&&}else {&
& && &k = abt[2 * p + 1] - 'A' + 0x0a;&
& &&&int a = (j && 4) +&
& &&&byte b = (byte)&
& &&&bbt[p] =&
/** *//**&
& & * @函数功能: BCD码转ASC码&
& & * @输入参数: BCD串&
& & * @输出结果: ASC码&
public static String BCD2ASC(byte[] bytes) {&
& & StringBuffer temp = new StringBuffer(bytes.length * 2);&
& & for (int i = 0; i & bytes. i++) {&
& &&&int h = ((bytes&& 0xf0) &&& 4);&
& &&&int l = (bytes&& 0x0f);& &
& &&&temp.append(BToA[h]).append( BToA[l]);&
& & return temp.toString() ;&
/** *//**&
& & * MD5加密字符串,返回加密后的16进制字符串&
& & * @param origin&
& & * @return&
public static String MD5EncodeToHex(String origin) {&
& && & return bytesToHexString(MD5Encode(origin));&
/** *//**&
& & * MD5加密字符串,返回加密后的字节数组&
& & * @param origin&
& & * @return&
public static byte[] MD5Encode(String origin){&
& & return MD5Encode(origin.getBytes());&
/** *//**&
& & * MD5加密字节数组,返回加密后的字节数组&
& & * @param bytes&
& & * @return&
public static byte[] MD5Encode(byte[] bytes){&
& & MessageDigest md=&
& & try {&
& &&&md = MessageDigest.getInstance(&MD5&);&
& &&&return md.digest(bytes);&
& & } catch (NoSuchAlgorithmException e) {&
& &&&e.printStackTrace();&
& &&&return new byte[0];&
//关于byte:& & signed byte 把 0x00 ~ 0xff 映射成范围 0~127和 -128~-1& & 两段,比较简单的办法用 (b+256)%256的办法令其值回到0~255,或者用&0xff并赋给一个int
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:744347次
积分:6679
积分:6679
排名:第2542名
原创:126篇
转载:17篇
评论:79条JAVA 十六进制与字符串的转换
字体:[ ] 类型:转载 时间:
将指定byte数组以16进制的形式打印到控制台
toHexString public static String toHexString(int i)以十六进制的无符号整数形式返回一个整数参数的字符串表示形式。 如果参数为负,那么无符号整数值为参数加上 232;否则等于该参数。将该值转换为十六进制(基数 16)的无前导 0 的 ASCII 数字字符串。如果无符号数的大小值为零,则用一个零字符 '0' ('\u0030') 表示它;否则,无符号数大小的表示形式中的第一个字符将不是零字符。用以下字符作为十六进制数字: abcdef 这些字符的范围是从 '\u0030' 到 '\u0039' 和从 '\u0061' 到 '\u0066'。如果希望得到大写字母,可以在结果上调用 String.toUpperCase() 方法: Integer.toHexString(n).toUpperCase() 参数: i - 要转换成字符串的整数。 返回: 用十六进制(基数 16)参数表示的无符号整数值的字符串表示形式。 // 转化字符串为十六进制编码 public static String toHexString(String s) { String str=""; for (int i=0;i&s.length();i++) { int ch = (int)s.charAt(i); String s4 = Integer.toHexString(ch); str = str + s4; }
} // 转化十六进制编码为字符串 public static String toStringHex(String s) { byte[] baKeyword = new byte[s.length()/2]; for(int i = 0; i & baKeyword. i++) { try { baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16)); } catch(Exception e) { e.printStackTrace(); } } try { s = new String(baKeyword, "utf-8");//UTF-16le:Not } catch (Exception e1) { e1.printStackTrace(); }
} // 转化十六进制编码为字符串 public static String toStringHex(String s) { byte[] baKeyword = new byte[s.length()/2]; for(int i = 0; i & baKeyword. i++) { try { baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16)); } catch(Exception e) { e.printStackTrace(); } } try { s = new String(baKeyword, "utf-8");//UTF-16le:Not } catch (Exception e1) { e1.printStackTrace(); }
} public static void main(String[] args) { System.out.println(encode("中文")); System.out.println(decode(encode("中文"))); } /* * 16进制数字字符集 */ private static String hexString="ABCDEF"; /* * 将字符串编码成16进制数字,适用于所有字符(包括中文) */ public static String encode(String str) { //根据默认编码获取字节数组 byte[] bytes=str.getBytes(); StringBuilder sb=new StringBuilder(bytes.length*2); //将字节数组中每个字节拆解成2位16进制整数 for(int i=0;i&bytes.i++) { sb.append(hexString.charAt((bytes[i]&0xf0)&&4)); sb.append(hexString.charAt((bytes[i]&0x0f)&&0)); } return sb.toString(); } /* * 将16进制数字解码成字符串,适用于所有字符(包括中文) */ public static String decode(String bytes) { ByteArrayOutputStream baos=new ByteArrayOutputStream(bytes.length()/2); //将每2位16进制整数组装成一个字节 for(int i=0;i&bytes.length();i+=2) baos.write((hexString.indexOf(bytes.charAt(i))&&4 |hexString.indexOf(bytes.charAt(i+1)))); return new String(baos.toByteArray()); } 第二种方法:将指定byte数组以16进制的形式打印到控制台 代码如下:package com.nantian.iclient.atm. public class Util { public Util() { } /** * 将指定byte数组以16进制的形式打印到控制台 * @param hint String * @param b byte[] * @return void */ public static void printHexString(String hint, byte[] b) { System.out.print(hint); for (int i = 0; i & b. i++) { String hex = Integer.toHexString(b[i] & 0xFF); if (hex.length() == 1) { hex = '0' + } System.out.print(hex.toUpperCase() + " "); } System.out.println(""); } /** * * @param b byte[] * @return String */ public static String Bytes2HexString(byte[] b) { String ret = ""; for (int i = 0; i & b. i++) { String hex = Integer.toHexString(b[i] & 0xFF); if (hex.length() == 1) { hex = '0' + } ret += hex.toUpperCase(); }
} /** * 将两个ASCII字符合成一个字节; * 如:"EF"--& 0xEF * @param src0 byte * @param src1 byte * @return byte */ public static byte uniteBytes(byte src0, byte src1) { byte _b0 = Byte.decode("0x" + new String(new byte[]{src0})).byteValue(); _b0 = (byte)(_b0 && 4); byte _b1 = Byte.decode("0x" + new String(new byte[]{src1})).byteValue(); byte ret = (byte)(_b0 ^ _b1);
} /** * 将指定字符串src,以每两个字符分割转换为16进制形式 * 如:"2B44EFD9" --& byte[]{0x2B, 0x44, 0xEF, 0xD9} * @param src String * @return byte[] */ public static byte[] HexString2Bytes(String src){ byte[] ret = new byte[8]; byte[] tmp = src.getBytes(); for(int i=0; i&8; i++){ ret[i] = uniteBytes(tmp[i*2], tmp[i*2+1]); }
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具相关软件 /中文/ /中文/ /英文/ /中文/ /中文/ /英文/ /英文/ /英文/ /中文/ /英文/顶好评:50%踩坏评:50请简要描述您遇到的错误,我们将尽快予以修正。轮坛转帖HTML方式轮坛转帖UBB方式
25.0M/英文/7.0
33.8M/中文/4.7
23.4M/中文/4.8
303M/中文/1.4
651.2M/中文/2.8
41.1M/英文/5.2
11.2M/中文/7.0
在反编译中出现的一般是16进制代码,可以准确快速转换2、10、16、字节、文本互相转换.支持多种进制互相转换:10&--&2,8,16 及 2&--&16的相互转换,支持把文字字符转换为16进制,2进制及其逆操作,转换为10进制(ASCII码)并且可偏移ASCII码。 转换为10进制的双字节字符(例如汉字)有:正数、负数、字节分离三种表示方法 支持加入前置及后置字符,可轻松组合出UTF-8等字符 .键盘码的查询:以10和16进制显示键盘按键对应编码,可作为编程方面的查询工具。 .编码转换:字符及Base64编码的互转,且可自定义密钥,以达到简单字符加密 .子网划分辅助:即IP地址十进制与二进制的相互转换,以及二进制的与、或、取反操作 附加工具:
关于子网划分辅助的使用:在这里给予一段(黑客X档案中)如何利用子网掩码得到网络、主机地址的文章节选:如下:如何用子网掩码得到网络、主机地址(1)将IP地址与子网掩码转换成二进制;(2)将二进制形式的IP地址与子网掩码做“与”运算,将答案化为十进制便得到网络地址;(3)将二进制形式的子网掩码取“反”;(4)将取“反”后的子网掩码与IP地址做“与”运算,将答案化为十进制便得到主机地址。
提示:在填写IP地址时按空格键焦点可跳到一下节!
安卓官方手机版
IOS官方手机版
某些时候我们经常会用到进制转换,特别是涉及到计算机领域,编写各种程序。这种情况下一款简单方便的进制转换工具可以帮我们节约大量时间,你要做的就是输入值,然后按一个按钮可以即时查看结果。这里西西为大家整理
中文 / 33.8M本次已经纠正官方多处翻译错误地
多国语言[中文] / 2.8MWinHex 是一款以十六进制编辑器为
中文 / 998KB十六进制编辑器 Hex Editor 是一
中文 / 110KB2、8、10和16这4种常用进制的转换
中文 / 110KB本转换器可用于任意位整数、任意
中文 / 3.9M&是一款非常专业的十六进制
16进制转换工具 V1.0 中文绿色版
下载帮助西西破解版软件均来自互联网, 如有侵犯您的版权, 请与我们联系。public Base64编码说明 要求把3个8位字节(3*8=24)转化为4个6位的 4*6 ,之后 matlab 238万源代码下载-
&文件名称: public
& & & & &&]
&&所属分类:
&&开发工具: Visual C++
&&文件大小: 2 KB
&&上传时间:
&&下载次数: 0
&&提 供 者:
&详细说明:Base64编码说明 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不-Base64-encoded instructions require the Base64 encoding three 8-bit bytes (3* 8 = 24) was converted to 4 6 bytes (4* 6 = 24), then in front of the two s complement 6 0, 8 is formed bits in a byte form. If the rest of the characters do not ...
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&Base64.h&&Base64.cpp
&输入关键字,在本站238万海量源码库中尽情搜索:

我要回帖

更多关于 十六进制字节 的文章

 

随机推荐