c-C语言 代码 求大神看看 困惑几天了 怎么修改 救命 啊救命

问题描述

C语言 代码 求大神看看 困惑几天了 怎么修改 救命 啊救命

C代码
int calc_imei(char inp_imei[16], char out_imei[12])
{
char out_mask[12] = {0xAB, 0xA0, 0x6F, 0x2F, 0x1F, 0x1E, 0x9A, 0x45, 0x0, 0x0, 0x0, 0x0};
int i=0, j=0;

for (i=0, j=0; i < 15; i++, j++)
{

    if (inp_imei[i] < '0' || inp_imei[i] > '9')
    {
        return 1;
    }
    out_imei[j] = (inp_imei[i] - '0');

    if (i >= 14)
        break;

    if (inp_imei[i+1] < '0' || inp_imei[i+1] > '9')
    {
         return 1;
    }
    out_imei[j] += ((inp_imei[i+1] - '0') << 4);

    out_imei[j] = out_imei[j] ^ out_mask[j];
    i++;
}

out_imei[j] = out_imei[j] ^ out_mask[j];

out_imei[8] = 0x57;
out_imei[9] = 0xDB;

out_imei[10] = out_imei[11] = 0;

for (i = 0; i < 10; i++)
{
    if (i & 0x1)
    {
        out_imei[11] += out_imei[i];
    }
    else
    {
        out_imei[10] += out_imei[i];
    }
}

return 0;

}

自己写的转JAVA

char[] out_mask = { 0xAB, 0xA0, 0x6F, 0x2F, 0x1F, 0x1E, 0x9A, 0x45,
0x0, 0x0, 0x0, 0x0 };

    char[] out_imei = new char[12];

    int i = 0, j = 0;

    for (i = 0, j = 0; i < 15; i++, j++) {

        if (inp_imei[i] < '0' || inp_imei[i] > '9') {
            return null;
        }
        out_imei[j] = (char) (inp_imei[i] - '0');

        if (i >= 14)
            break;

        if (inp_imei[i + 1] < '0' || inp_imei[i + 1] > '9') {
            return null;
        }
        out_imei[j] += ((inp_imei[i + 1] - '0') << 4);

        out_imei[j] = (char) (out_imei[j] ^ out_mask[j]);
        i++;
    }

    out_imei[j] = (char) (out_imei[j] ^ out_mask[j]);

    out_imei[8] = 0x57;
    out_imei[9] = 0xDB;

    out_imei[10] = out_imei[11] = 0;

    for (i = 0; i < 10; i++) {
        if ((i & 0x1) != 0) {
            out_imei[11] += out_imei[i];
        } else {
            out_imei[10] += out_imei[i];
        }
    }

    return out_imei;

}

为什么不对 55555555555555555555

解决方案

Java 中将 char 换成 BYTE 试试
如果问题还没有解决,建议你单步调度,看看哪一步的得到的值与 C 的不同。找到问题点,再分析肯定会简单很多。

解决方案二:

你的代码意图是什么,输入输出要求是什么,看上去感觉在看天书啊。单步跟踪就能发现问题了。

解决方案三:

注意java的char的字节大小

解决方案四:

Java 中将 char 换成 BYTE 试试

时间: 2025-01-26 19:27:23

c-C语言 代码 求大神看看 困惑几天了 怎么修改 救命 啊救命的相关文章

c语言acm1003 求大神看看我的代码哪错了

问题描述 c语言acm1003 求大神看看我的代码哪错了 Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 + (-1) + 5 + 4 = 14. Input The first line of the input

编程语言-我要用C++实现这段代码 求大神帮解释下R语言代码的意思

问题描述 我要用C++实现这段代码 求大神帮解释下R语言代码的意思 OrgData=read.csv("DownlinkPower_train.csv",header=T) TestData=read.csv("DownlinkPower_test.csv",header=T) #remove abnormal data, optional //移除异常数据 OrgData = subset(OrgData, OrgData[,1] > 0) TestData

c语言链表代码求大神解释

问题描述 c语言链表代码求大神解释 insert中的 while( next_node && new_node->data > next_node->data) 是什么意思? 还有excise是什么意思,干什么用的? 最近在学链表,学不清楚... #include #include #include "list.h" /* Create a new node containing the specified data, and return a poi

c语言-C语言学习方法求大神指教

问题描述 C语言学习方法求大神指教 不知道该怎么学C语言,求大神指教, 不知道该怎么学C语言,求大神指教, 不知道该怎么学C语言,求大神指教, 不知道该怎么学C语言,求大神指教 解决方案 C语言不太适合初学,它涉及很多计算机本身的原理.之所以很多人学C语言,其实只是应付考试罢了.而应付考试,其实是有技巧的,你不用真的学会C语言,只要多做习题,熟悉出题套路就可以了. 甚至你真正去学会C语言,反倒影响你考试. 解决方案二: 看这本书: 中文名: C程序设计语言(第2版 新版) 原名: The Pro

c语言问题求大神的帮忙!!

问题描述 c语言问题求大神的帮忙!! #include"stdio.h" void mian() { int a,b,c; for(a=1;a<=3;a++) for(b=1;b<=3;b++) for(c=1;c<=3;c++) if(a!=1&&c!=1&&c!=3&&a!=b&&b!=c&&a!=c) {printf("%c谁将嫁给A",'x'+a-1); pri

图片-悬赏40分 全英文的介绍的简单的两个c语言编程 求大神帮忙解答

问题描述 悬赏40分 全英文的介绍的简单的两个c语言编程 求大神帮忙解答 解决方案 #include int main() { int count; printf("输入"*"的个数:"); scanf("%d",&count); for(int i=0;i<=count;i++) { for(int j=0;j<i;j++) { printf("*"); } printf("n");

c语言问题求大神指导!!

问题描述 c语言问题求大神指导!! #include""stdio.h""#include""stdlib.h""void main(){ int problemguess=1a; char ch; problem=(int)(rand()%899+1); scanf(""%f%d""&ch&guess); for(a=0;ch!='n';a++) for(a=0;gue

c语言编程 求大神 求解答

问题描述 c语言编程 求大神 求解答 ? Write a program that outputs a diamond shape ? Use '*', ' ', and new line character(' ') ? Use the for statement ? The first line has four ' ' and one '*' ? The second line has three ' ' and three '*' ? The third line has two ' '

android http POST请求方式向服务其发送数据不成功 贴出代码求大神帮解决一下

问题描述 android http POST请求方式向服务其发送数据不成功 贴出代码求大神帮解决一下 new Thread(new Runnable() { @Override public void run() { String szSrc = ""abcdefghijkl123456789123"" ; byte[] encoded = ThreeDes.encryptMode(keyBytes szSrc.getBytes()); try { /* Strin