gpt4 book ai didi

java - 在位置 0 处插入字节并右移剩余数据位

转载 作者:行者123 更新时间:2023-12-02 09:26:30 26 4
gpt4 key购买 nike

我真的很努力地完成这篇文章,任何想法或指示都会对我有很大帮助。这是我的问题:

  1. 我正在处理 ISO 8583层和数据元素 32 定义为 n ..11,这意味着该元素是数字、可变长度,最大大小为 11。

  2. 并且这需要以二进制格式(而不是 ASCII)发送。

  3. 我们需要显示 LLNN,例如 ISO 二进制原始数据应如下所示:11 06 01 04 00 00 00

到目前为止,我已经能够使用 BCD(06 01 04 00 00 00) 完成大小为 6 的 (11/2)+(11%2) 填充 byte[] 数组。我得到的字段总长度计算为 11,现在我需要将其插入到 byte[0] 处,其中 11 而不是 0B 即 0001 0001 打包为一个字节 byte[]as 11 ,我的逻辑如下所示,当我给出 nBytes=1(BCD ISO 中的前 255 个字符)时,它将插入长度字段值作为 0b 01 04 00 00 00,或者如果我将 nBytes 作为 2 传递,则给出 00 0b 04 00 00 00。右移逻辑出了问题......

有人可以帮我纠正下面的逻辑,使结果为 11 06 01 04 00 00 00

int nBytes=1;
for (int i = nBytes - 1; i >= 0; i--) {
buf[i] = (byte)(length & 0xFF);
length >>= 8;
}
outstream.write(buf);

最佳答案

我认为this function执行您正在寻找的 BCD 转换:

class T {
public static byte toBCD(int n)
{
// a*10 + b -> a*16 + b;
byte a = (byte)(n / 10);
byte b = (byte)(n % 10);

return (byte) (a * 0x10 + b);
}

public static void main(String[] args)
{
assert(toBCD(11) == 0x11);
assert(toBCD(28) == 0x28);
}
}

关于java - 在位置 0 处插入字节并右移剩余数据位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13824680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com