VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 418|回复: 3

[求助] 硬盘的序列号(是字符串)要转换对应的HEX

[复制链接]
45_avatar_middle
在线会员 125096 发表于 2017-8-30 21:12:21 | 显示全部楼层 |阅读模式
50驿站币
  1. #include <stdio.h>
  2. #include <Windows.h>

  3. char *ConvertToString (DWORD diskdata[10],char* buf)
  4. {

  5.         int position = 0;
  6.         int index = 0;

  7.         //  each integer has two characters stored in it backwards
  8.         for (index = 0; index <= 9; index++)
  9.         {
  10.                 //  get high byte for 1st character
  11.                 buf [position++] = (char) (diskdata [index] / 256);

  12.                 //  get low byte for 2nd character
  13.                 buf [position++] = (char) (diskdata [index] % 256);
  14.         }

  15.         //  end the string
  16.         buf[position] = '\0';

  17.         //  cut off the trailing blanks
  18.         for (index = position - 1; index > 0 && isspace(buf [index]); index--)
  19.                 buf [index] = '\0';

  20.         return buf;
  21. }

  22. void StringToConvert (char buf[20],BYTE diskdata[40])
  23. {

  24.         int position = 0;
  25.         for (int i=0;i<20;i++)
  26.         {

  27.         }

  28.         return;
  29. }


  30. int main (void)
  31. {


  32.         /*
  33.         这个ConvertToString是从获取硬盘序列号中的,现在有一个需求就是给你一个硬盘的序列号(是字符串)要转换对应的HEX
  34.         就是类似的 HEX-String 相互转换的函数
  35.         */


  36.         //把HEX转换字符串,得到硬盘序列号
  37.         char serialNumber[21]={0};
  38.         BYTE diskdata[41]={"\x20\x20\x00\x00\x20\x20\x00\x00\x20\x20\x00\x00\x20\x20\x00\x00\x20\x20\x00\x00\x20\x20\x00\x00\x39\x57\x00\x00\x31\x41\x00\x00\x4a\x57\x00\x00\x36\x51\x00\x00"};
  39.         ConvertToString ((DWORD*)diskdata, serialNumber);
  40.         printf("%s\n",serialNumber);

  41.         //反之知道硬盘序列号,怎么得到HEX
  42.         ZeroMemory(diskdata,41);;
  43.         StringToConvert(serialNumber,diskdata);

  44.         getchar();
  45.         getchar();
  46.         return 0;
  47. }
复制代码

最佳答案

查看完整内容

初步写了一下,大概是这样吧,检测了一下结果没问题。有个别地方可能没考虑到的,楼主再改改吧!




上一篇:把txt里存的文件名所对应的文件复制到一个文件夹下
下一篇:希望有人帮忙把这个VB程序转化为C++程序,谢谢。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2017-8-30 21:12:22 | 显示全部楼层
初步写了一下,大概是这样吧,检测了一下结果没问题。有个别地方可能没考虑到的,楼主再改改吧!

  1. void StringToConvert(char buf[20], BYTE diskdata[40])
  2. {
  3.         int dwSize = sizeof(DWORD);
  4.         for (int i = 0, j = 0; i < 20; i += 2, j += dwSize)
  5.         {
  6.                 DWORD dwT = buf[i] * 256 + buf[i + 1];
  7.                 memcpy(diskdata + j, &dwT, dwSize);
  8.         }
  9. }
复制代码

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

45_avatar_middle
ico_lz  楼主| 125096 发表于 2017-8-30 21:12:56 | 显示全部楼层
这个ConvertToString是从获取硬盘序列号中的,现在有一个需求就是给你一个硬盘的序列号(是字符串)要转换对应的HEX
就是类似的 HEX-String 相互转换的函数

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

45_avatar_middle
ico_lz  楼主| 125096 发表于 2017-8-31 08:54:58 | 显示全部楼层
Syc 发表于 2017-8-30 21:12
初步写了一下,大概是这样吧,检测了一下结果没问题。有个别地方可能没考虑到的,楼主再改改吧!

已测试OK

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-12-13 08:47

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表