易截截图软件、单文件、免安装、纯绿色、仅160KB

C#到Java byte类型冲突的解决

最近要改写一个核心加密认证类,从C#改写成Java。
发现在调试时,加密的数据无论如何也对不上。
经过跟踪,发现问题出在C#和Java byte类型的区别上:在C#里 byte类型是无符号的,而Java里是有符号的,所以C#里的129到Java里就成了负数。
发现了问题,解决就比较容易了,针对Java的byte,采用Int来进行存储。
通过如下代码从byte到int进行转换:
/**
* from byte to int, because of byte in java is signed
*/
private static int toInt(int b) {
return b >= 0 ? (int)b : (int)(b + 256);
}
对于下面C#的代码:
private static AuthenticationTicket fromByteArray(byte[] buf)
{
MemoryStream ms = new MemoryStream(buf);
BinaryReader reader = new BinaryReader(ms);
short version = reader.ReadInt16();
short scope = reader.ReadInt16();
int key = reader.ReadInt32();
}
改写为如下形式,相当于重新实现BinaryReader的ReadInt16和ReadInt32方法。
private static AuthenticationTicket fromByteArray(int[] bufInt)
{
int version = readInt16(bufInt);
int scope = readInt16(bufInt);
long key = readInt32(bufInt);
}

private static int readInt16(int[] bufInt) {
int i = 0;
for(int j = 0; j < 2; readArrayIndex++, j++) {
i += bufInt[readArrayIndex] << (j << 3);
}
return i;
}
private static long readInt32(int[] bufInt) {
long i = 0;
for(int j = 0; j < 4; readArrayIndex++, j++) {
i += bufInt[readArrayIndex] << (j << 3);
}
return i;
}
上面的例子说明,c#和Java虽然非常相像,但是一些关键细节的不同是需要仔细考虑的。


相关文档:

关于java的http协议文件上传实用例题一

关于java的http协议文件上传实用例题一
(2006-07-25 16:43:56)
转载

 

分类:
java
关于java的http协议上传:(简单实用而且健壮;速度快)
此方法比apache的文件上传包(uploadfile1.1:就文件上传功能而言)要强多了
1.只需要一个MultipartRequest.java基本文件就行。
2.前台html的基本格式
<html ......

[Java Generics] get T.Class from T

 
/**
 * Copyright (c) 2010 IBOBO Corporation. All Rights Reserved.
 */
package com.ibm.util.dao.hib;
/**
 * [Java Generics] get T.Class from <T>
 * 
 * @author <a ......

java 的版本异常

学习之路总是并不平坦的,这不,一开始就遇到问题了:Bad version number in .class file。版本不对?可是我用的java以及javac都是JDK5呀,怎么回事?除了编译版本跟运行版本不一致外是不会出现这种可能的。突然想起前几天试了一下JDK6,把Eclipse的JDK编译器选成JDK6了。果然,将其改回去JDK5就行了。
================== ......

Java 调用EXE

使用Runtime.getRuntime().exec()方法可以在java程序里运行外部程序.  
  该方法有6个可访问版本:  
  1.exec(String   command)  
  2.exec(String   command,   String   envp[],   File   dir)    
  3.exec(String   cmd, &n ......

让Eclipse下Java项目与javadocs恋上

在Eclipse中连上javadocs文档
 
一、             安装Eclipse
二、             从Oracle官网或者sun以前的官网上下载Java相应的docs文档
三、      & ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号