请问有没有
1 、 将 long 型 变量 NUM 的数值 按16进制 形式存入 数组的 函数 比如 NUM=0X123456789ABCDEF0 存入数组 A[9] 后 A[0]=0X12 A[1]=0X34 A[2]=0X56 A[3]=0X78 A[4]=0X9A A[5]=0XBC A[6]=0XDE A[7]=0XF0
相反有没有函数能将 A[0]-A[7] 的内容 转到 long型变量 num中
2 、 将 long 型 变量 NUM 的数值 按压缩BCD码的 形式存入 数组的 函数 比如 NUM=1234567890 存入数组 A[9] 后 A[0]=12 A[1]=34 A[2]=56 A[3]=78 A[4]=90
相反有没有函数能将 A[0]-A[7] 的中的压缩BCD码的内容 转到 long型变量 num中
谢谢大家 。
#include <stdio.h>
int main()
{
char arr[8];
long *l = (long *)&arr[0];
*l = 0xF0DEBC9A78563412;
printf("%d", (int)arr[0]); //输出18,也就是0x12,别的类似
return 0;
}
【以下回答由 GPT 生成】
答案:
def store_hex(num):
arr = []
for i in range(8):
arr.append((num >> (i*8)) & 0xFF)
return arr
使用示例:
NUM = 0x123456789ABCDEF0
arr = store_hex(NUM)
print(arr)
# 输出 [18, 52, 86, 120, 154, 188, 222, 240]
def store_bcd(num):
arr = []
while num > 0:
digit = num % 100
arr.insert(0, (digit // 10) << 4 | (digit % 10))
num //= 100
return arr
使用示例:
NUM = 1234567890
arr = store_bcd(NUM)
print(arr)
# 输出 [18, 52, 86, 120, 144]
def convert_to_long(arr):
num = 0
for i in range(len(arr)):
num |= arr[i] << (i*8)
return num
使用示例:
arr = [18, 52, 86, 120, 154, 188, 222, 240]
NUM = convert_to_long(arr)
print(hex(NUM))
# 输出 0x123456789abcdef0
请注意,这些示例代码都是用Python编写的。如果您需要在其他编程语言中实现相同的功能,请根据相应语言的语法和库函数进行调整。
【相关推荐】