将两个十六进制字符串转换为datetime对象

时间:2016-04-29 20:43:07

标签: matlab hex

我有一个十六进制数字(uint32)存储为字符串。字符串是'DA5CE697'。我想将其转换为正常的十六进制数,我可以在其上执行一些十六进制算术运算。是否有任何函数可以在matlab中执行此操作(如str2num对于普通数字)?或者,如果还有其他方法可以解决这个问题吗?

更新

上面提供的字符串是NTP时间戳的第一部分。我正在使用:

datetime(t1 + 1/t2, 'ConvertFrom', 'epochtime', 'epoch', '1900-01-01')

从数据文件中获取确切时间。 t1t2都是4个字节。它们的值是:

t1 = 'DA5CE697';
t2 = '7F14FCE7';

理想情况下,我可以一次读取4个字节并获取t1t2的值。但我必须一次遍历文件1个字节(一些约束)。所以,我正在回收t1t2的值(以避免丢失零。否则,它将'05'存储为'5')。

1 个答案:

答案 0 :(得分:0)

您的字符串f = hex2dec('DA5CE697') %// 3663521431 号码的十六进制表示形式。如果您想要十六进制字符串的整数(十进制)版本,则需要使用hex2dec进行转换,以便能够在MATLAB中执行算术。

t1

或者,如果您希望将十六进制值转换为浮点数,则可以使用hex2num

MATLAB没有十六进制数据类型,因此我不确定"十六进制算术"你期待能够表演。

<强>更新

现在您已经提供了更多信息,您将t2hex2dec组合成一个时间戳,使用t1 = 'DA5CE697'; t2 = '7F14FCE7'; datetime(hex2dec(t1) + 1/hex2dec(t2), 'ConvertFrom', 'epochtime', 'epoch', '1900-01-01') %// 03-Feb-2016 20:50:31 两个(如上所示),然后执行算术使用小数值。

package timerrr;

import java.util.*;

public class Timerrr {

  public static void main(String[] args) {

    Timer timer = new Timer();

    timer.schedule(
        new TimerTask() {
          int i = 0;

          @Override
          public void run() {

            System.out.println("timer is still running");
          }
        },
        1 * 150 * 100,
        1 * 50 * 100);
  }
}