数值 与 数组 的存储转换

请问有没有

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 生成】

答案:

  1. 将 long 型变量 NUM 的数值按16进制形式存入数组的函数:
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]
  1. 将 long 型变量 NUM 的数值按压缩BCD码的形式存入数组的函数:
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]
  1. 将数组中的内容转换为一个 long 型变量 NUM 的值的函数:
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编写的。如果您需要在其他编程语言中实现相同的功能,请根据相应语言的语法和库函数进行调整。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^