当前位置: 首页 > 面试题库 >

引导至Java中的Base64

太叔航
2023-03-14
问题内容

我正在使用以下代码将Guid转换为C#中的Base64:

var id = Guid.Parse("be9f1bb6-5c8e-407d-85a3-d5ef31f21b4d");
var base64=Convert.ToBase64String(id.ToByteArray());

输出量

thufvo5cfUCFo9XvMfIbTQ ==

当我尝试使用以下命令在Java中执行相同操作时:

java.util.Base64.Encoder encoder=Base64.getEncoder();
UUID uuid = UUID.fromString("be9f1bb6-5c8e-407d-85a3-d5ef31f21b4d");
ByteBuffer bb = ByteBuffer.wrap(new byte[16]);
bb.putLong(uuid.getMostSignificantBits());
bb.putLong(uuid.getLeastSignificantBits());
encoder.encodeToString(bb.array());

不同的输出

vp8btlyOQH2Fo9XvMfIbTQ ==

我在Java代码中做错了什么?如何获得与C#相同的结果?


问题答案:

结构略有不同,但是在字节数组的第一部分交换一些字节可以解决您的问题。

java.util.Base64.Encoder encoder= Base64.getEncoder();
UUID uuid = UUID.fromString("be9f1bb6-5c8e-407d-85a3-d5ef31f21b4d");
ByteBuffer bb = ByteBuffer.wrap(new byte[16]);
bb.putLong(uuid.getMostSignificantBits());
bb.putLong(uuid.getLeastSignificantBits());

byte[] uuid_bytes = bb.array();
byte[] guid_bytes = Arrays.copyOf(uuid_bytes,uuid_bytes.length);

guid_bytes[0] = uuid_bytes[3];
guid_bytes[1] = uuid_bytes[2];
guid_bytes[2] = uuid_bytes[1];
guid_bytes[3] = uuid_bytes[0];
guid_bytes[4] = uuid_bytes[5];
guid_bytes[5] = uuid_bytes[4];
guid_bytes[6] = uuid_bytes[7];
guid_bytes[7] = uuid_bytes[6];

String result = encoder.encodeToString(guid_bytes);


 类似资料:
  • 在Java9中似乎不允许有所谓的拆分包,即在两个不同的模块中定义同一个包。这导致了我的迁移过程中的一个问题:(Gradle)项目包含一个名为的Jar文件,其结构如下: <code>src</code>目录包含一个类<code>com.example。条形图依赖于>以及的模块定义。<code>引导程序。jar文件不包含模块信息,因为它是在Java9之前编译的,所以它使用一个名为的自动模块。问题是现在

  • 问题内容: 以下代码不适用于Apache poi 3.16。有人可以提供正确的解决方案吗,在我的项目中,有些人只能使用 例外: 问题答案: 这样做的主要问题是这些和不是项目的一部分。它们是由开发的,第一个版本的命名错误和。这些老班没有更新从2014年开始,需要版本 的 使用。 请使用更多 最新版本的fr.opensagres.poi.xwpf.converter.pdf,该版本可以使用最新的稳定版

  • 我是Java和Spring Boot的初学者,我在Spring Boot上使用< code>Pagination,用这个代码我返回用户列表,如果我想返回页数,我必须这样做? 我知道使用我可以获取页数,但如何返回它?

  • 问题内容: 我通常熟悉使用CSS刷新页脚的技术。 但是我很难在Twitter引导程序中使用这种方法,这很可能是由于Twitter引导程序本质上是响应式的。使用Twitter引导程序,我无法使用上述博客文章中描述的方法使页脚刷新至页面底部。 问题答案: 发现这里的代码片段非常适合引导 HTML: CSS:

  • 问题内容: 我应该使用 要么 当 导入模块 ,并和有 改变名字没有必要/愿望 ()? 有什么区别吗?有关系吗? 问题答案: 假设是中的模块或包,没有区别*,那就没关系。这两个语句具有完全相同的结果: 如果不是模块或软件包,则第二种形式将不起作用;引发回溯: *在Python 3.6及更高版本中,包含其他模块的软件包的初始化顺序存在一个错误,即在软件包 的加载阶段,在子模块中使用 该软件包 会失败,

  • 问题内容: 所以我想做的是将double转换为有理数。我检查小数点后有多少个数字,例如,我想将数字123.456保存为123456/1000。 但是,对于数字123.456,我得到了一个四舍五入的错误,结果是123455。我想可以用BigDecimal来解决这个问题,但我无法使其正常工作。同样,在计算出有理数之后,我想用参数(int numerator,int denominator)调用另一个构