我有一个十六进制数字(uint32
)存储为字符串。字符串是'DA5CE697'
。我想将其转换为正常的十六进制数,我可以在其上执行一些十六进制算术运算。是否有任何函数可以在matlab中执行此操作(如str2num
对于普通数字)?或者,如果还有其他方法可以解决这个问题吗?
更新
上面提供的字符串是NTP时间戳的第一部分。我正在使用:
datetime(t1 + 1/t2, 'ConvertFrom', 'epochtime', 'epoch', '1900-01-01')
从数据文件中获取确切时间。 t1
和t2
都是4个字节。它们的值是:
t1 = 'DA5CE697';
t2 = '7F14FCE7';
理想情况下,我可以一次读取4个字节并获取t1
和t2
的值。但我必须一次遍历文件1个字节(一些约束)。所以,我正在回收t1
和t2
的值(以避免丢失零。否则,它将'05'存储为'5')。
答案 0 :(得分:0)
您的字符串是您f = hex2dec('DA5CE697')
%// 3663521431
号码的十六进制表示形式。如果您想要十六进制字符串的整数(十进制)版本,则需要使用hex2dec
进行转换,以便能够在MATLAB中执行算术。
t1
或者,如果您希望将十六进制值转换为浮点数,则可以使用hex2num
。
MATLAB没有十六进制数据类型,因此我不确定"十六进制算术"你期待能够表演。
<强>更新强>
现在您已经提供了更多信息,您将t2
和hex2dec
组合成一个时间戳,使用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);
}
}