我需要从现有的64位值中提取内存地址,该地址指向4K数组,起始值为:
0x000000030c486000
Run Code Online (Sandbox Code Playgroud)
我需要的地址存储在位51:12中,所以我使用以下方法提取这些位:
address = start >> 12 & 0x0000007FFFFFFFFF
Run Code Online (Sandbox Code Playgroud)
这留给我的地址:
0x000000000030c486
Run Code Online (Sandbox Code Playgroud)
但是,我正在阅读的文档指出,存储在该地址的数组大小为4KB,并且自然对齐.
我对自然对齐实际意味着什么有点困惑.我知道页面对齐的东西,地址通常以'000'结尾(虽然我可能错了).
我假设从起始值取得的地址只有40位长,我需要执行额外的位移操作来排列位,以便可以进一步正确解释它们.
如果有人可以就这样做提出一些建议,我会很感激.
谢谢
我目前正在使用Linux内核模块,我需要访问存储在数组中的一些64位值,但是我首先需要从void指针进行转换.
我正在使用phys_to_virt返回void指针的内核函数,我不完全确定如何实际使用此void指针来访问它指向的数组中的元素.
目前我这样做:
void *ptr;
uint64_t test;
ptr = phys_to_virt(physAddr);
test = *(uint64_t*)ptr;
printk("Test: %llx\n", test);
Run Code Online (Sandbox Code Playgroud)
我从测试中获得的值不是我期望在数组中看到的值,所以我很确定我做错了什么.我需要访问数组中的前三个元素,所以我需要将void指针强制转换为uint64_t [],但我不太清楚如何做到这一点.
任何建议将不胜感激.
谢谢
我需要从存储在ByteBuffer(小端序)中的字节中提取两个整数值
ByteBuffer bb = ByteBuffer.wrap(inputBuffer);
bb.order(ByteOrder.LITTLE_ENDIAN);
Run Code Online (Sandbox Code Playgroud)
我需要从ByteBuffer中的任何字节获取的值是:
length =低阶半字节的整数值
frequency =高阶半字节的整数值
目前我正在使用以下代码提取低阶nybble:
length = bb.getInt(index) & 0xf;
Run Code Online (Sandbox Code Playgroud)
这看起来效果很好.然而,这似乎是高阶nybble我似乎无法正确解释.
我对位移或屏蔽感到有些困惑,我认为我需要执行它,任何建议都会非常有用.
非常感谢!!
我正在使用一些小端二进制数据,我已经达到了一个尴尬的地方,我需要将奇数个字节转换为整数值.
现在使用ByteBuffer类我能够读取整数并使用getInt() getLong()函数完美地完成,这些函数分别读取4和8个字节.
但是,在这个例子中,我需要读取三个字节并从中取出一个int.我已经尝试过getShort + get()(2个字节+ 1个字节),但我认为这不是正确的做法.
我猜我需要将字节位移位以获得正确的int值,但我总是对位移有点困惑.
另外我还以为bytebuffer类会提供一个读取奇数个字节的函数,但似乎没有.
一种方法是创建一个长度为三个字节的byte [],将三个字节放入其中,然后在其周围包装一个bytebuffer,并从中读取一个int.但这似乎是很多额外的代码.
任何建议或意见将不胜感激.
谢谢
我只是在从文件中读取一些数据作为字节流,我刚刚遇到一些unicode字符串,我不知道如何最好地处理.
每个字符使用两个字节,只有第一个字符似乎包含实际数据,因此例如字符串'trust'存储在文件中:
0x74 0x00(t) 0x72 0x00(r) ...and so on
Run Code Online (Sandbox Code Playgroud)
通常我只使用正则表达式来替换零,因此删除空格.但是,文件中的单词之间的空格是使用实现的0x00 0x00,所以尝试做一个简单的字符串'replaceAll'有点搞乱它.
我尝试过使用字符串编码集,例如'ISO-8859-1'和'UTF-8/16',但每次我都会使用空格.
我创建了一个简单的正则表达式来删除双零十六进制值,即:
new String(bytes).replaceAll("[\\00]{2,},"");
Run Code Online (Sandbox Code Playgroud)
但这显然只适用于双零,我真的很想用零替换单个零,并用实际的ASCII/Unicode空格字符双倍零.
我可以发誓,其中一个Java字符串格式设置处理了这种事情,但我可能错了.那么我应该创建一个正则表达式去除零,还是Java实际上提供了执行它的机制?
谢谢
我正在做一些让我使用一些24位整数的工作.
本质上,我需要能够从这些24位获得有符号和无符号值.
目前我正在使用以下代码将三个字节放在一起并返回其值.
private static int bytesToInt(byte[] input) {
if (input.length == 3) {
return (input[2] & 0xFF) << 16 | (input[1] & 0xFF) <<8 | (input[0] & 0xFF);
}
}
Run Code Online (Sandbox Code Playgroud)
我给它的输入是字节:0x42 0x87 0xfe返回的结果是:16680770
这(我相信)是正确的无符号值,但我还需要它的有符号值,我认为是这样 -96446
我猜我必须在这里做一些位移来解决它,但我不知道如何实现这一目标.
我已经尝试将结果转换为a和long,但都没有返回签名值.我也尝试过Math.abs(结果),但我认为我没有正确使用它.
任何输入将不胜感激.
谢谢
我正在读取一些存储为 long 的 Microsoft FileTime 值,并尝试将其转换为人类可读的日期。
例如,该值131733712713359180转换为:Wednesday, June 13, 2018 1:47:51pm。这是使用在线工具完成的,此处:在线时间转换器
我在 Java 中运行得很好,但是当我尝试在 C# 中运行时,我得到了错误的年份。我得到的输出是:13/06/0418 13:47:51。
我用来进行转换的代码是:
public string CalculateTimestamp(Int64 epoch)
{
DateTime date = DateTime.Now;
try
{
date = new DateTime(epoch);
DateTime filetime = new DateTime(date.ToFileTime());
result = filetime.ToString();
}
catch (Exception uhoh)
{
result = "failedtoparsetimestamp";
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
在 Java 中进行转换时,这是我正在使用的代码。
public String calculateTimeStamp(long epoch) {
if (epoch == 0) {
return "--";
}
long unixDifference = 11644473600000L; …Run Code Online (Sandbox Code Playgroud) 简而言之,我正在从一个文件中读取一些整数值,然后我需要将它们存储在一个字节数组中,以便以后写入另一个文件.
例如:
int number = 204;
Byte test = new Byte(Integer.toString(number));
Run Code Online (Sandbox Code Playgroud)
此代码抛出:
java.lang.NumberFormatException: Value out of range. Value:"204" Radix:10
Run Code Online (Sandbox Code Playgroud)
这里的问题是一个字节只能存储-127 - 128,所以很明显这个数字太高了.我需要做的是将数字签名,这是值-52,它将适合字节.但是,我不确定如何实现这一目标.
任何人都可以建议吗?
谢谢
我目前正在做一个需要显示大量数据的小型个人项目,我突然想到实现一种可缩放的用户界面,允许用户浏览大量数据.
我知道ZVTM和Piccolo2d这样的现有项目,我可能会最终用于这项工作,但我也很想开始编写自己的项目.但是,我有点不确定如何开始.
从我一直在阅读的内容看来,像Piccolo2d这样的项目是由于Java中缺乏"场景图"管理而开发的,Piccolo2d是基于"Pad","Pad ++"等老项目的工作而开发的. '爵士乐'.
经过一段时间的谷歌搜索,我可以看到JavaFX中提供了场景图管理,但我想知道Java 7中的Swing是否具有此功能.
我有一点想法,我想知道是否有可能使用JLayerAPI 实现基本的缩放界面,实质上是根据当前缩放级别装饰具有不同层的对象.
举个例子,假设我可以看到最远缩放级别的目录,放大后会显示目录的内容,进一步放大会显示目录中存在的文件内的文本.我一直在玩Eagle Mode一段时间,所以这是我正在考虑的一个完美的例子.
我知道这是一个很长的问题(如果它真的是一个问题).基本上,让我们假装Piccolo等人不存在,而我所拥有的只是核心Java 7 JDK,任何人都能提出一个好的起点吗?
似乎Piccolo2d在很大程度上依赖于Java2d API,所以我想知道API是否已经进步,或者Java 7引入了新的机制来实现类似的效果.
我对任何可以提供的意见或建议感兴趣.我知道这不是一项容易的任务,但没有任何时间限制,它只是一个个人项目.
谢谢
我有一个快速的谷歌,我似乎无法找到一个很好的解决方案,主要是因为我不知道如何描述它.
本质上,我需要在a中显示任意数量的十六进制字符JTextArea,并且我希望它们间隔均匀,并且字符的顶部和左侧显示字符的位置.
这是我想要实现的一个例子,这是十六进制查看器WinHex.

我一直在玩转换一个字节数组到一个字符串,然后用文本包装它,但我有一些奇怪的结果.任何有关如何实现与此相似的建议都将受到赞赏.
我考虑的另一个选择是使用JTable,但我想知道这是否过于复杂化了这个问题.也许.
谢谢