簡體   English   中英

C中的64位十六進制到十進制

[英]64bit hex to decimal in C

我正在從Wireshark中讀取一個pcap文件,並使用u_char將數據以8位存儲。 數據的一部分為64位,因此我需要將8個8位數字組合成一個64位數字/讀為一個64位數字,然后將其轉換為十進制數。 例如,這是我目前擁有的

Hex: 3f e2  da  2f 8b  de  c5  f4
Dec: 63 226 218 47 139 222 197 244

這就是我目前想要的

Hex: 3fe2da2f8bdec5f4
Dec: .589134

為了結合8個1bytes,我嘗試了:

long long int a;
a = (data[j] << 56) | (data[j+1] << 48) | (data[j+2] << 40) | (data[j+3] << 32) | (data[j+4] << 24) | (data[j+5] << 16) | (data[j+6] << 8) | data[j+7];
printf("%lld", a);

output: -1073815553

非常感謝您的幫助。 謝謝。

看起來OP希望用binary64 double覆蓋8字節整數。

這樣的代碼可移植到許多機器上,但是肯定不是所有C機器都可移植的,因為它假定了諸如double類的許多東西。

int main(void) {
  union {
    double d;
    unsigned long long ull;
  } u;
  u.d = 0.589134;
  printf("%016llX\n", u.ull);
  u.ull = 0x3fe2da2f8bdec5f4;
  printf("%lf\n", u.d);
  return 0;
}

3FE2DA2F8BDEC5F4
0.589134

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM