c转换java_将C位模式转换为Java

我正在将一个C程序转换为

Java并完全陷入以下方法,这让我大吃一惊.你愿意解释一下这种方法在做什么吗?

long TSBCA::GetSignedValue(const NDataString &value)

{

static NDataString s;

s = value;

long multiplier(1);

size_t len(s.Len());

if (len != 0)

{

if (s[0] >= (char)0xB0 && s[0] <= (char)0xB9)

{

s[0] &= 0x7F; //Bit Pattern: 0111 1111

multiplier = -1;

}

else if (s[len - 1] >= (char)0xB0 && s[len - 1] <= (char)0xB9)

{

s[len - 1] &= 0x7F; //Bit Pattern: 0111 1111

multiplier = -1;

}

else

multiplier = 1;

}

else

multiplier = 1;

return s.ToLong() * multiplier;

}

编辑:

我最初的Java版本:

private long getSignedValue(final String value){

byte[] bytes = value.getBytes();

int length = bytes.length;

long multiplier = 1L;

if (bytes.length > 0){

if (bytes[0] >= (char)0xB0 && bytes[0] <= (char)0xB9){

bytes[0] &= 0x7F; //Bit Pattern: 0111 1111

multiplier = -1;

}

else if (bytes[length - 1] >= (char)0xB0 && bytes[length - 1] <= (char)0xB9)

{

bytes[length - 1] &= 0x7F; //Bit Pattern: 0111 1111

multiplier = -1;

}

else

multiplier = 1;

}

else

multiplier = 1;

return Long.parseLong(Arrays.toString(bytes))* multiplier;

}

我做对了吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值