简体   繁体   English

将十进制转换为字节数组

[英]Convert decimal to byte array

assume I have decimal X 假设我有decimal X

I want to calculate 3 byte as a,b,c where a.bc Gig is near X. 我想将3个字节计算为a,b,c ,其中a.bc Gig在X附近。

I want it to be clean and as short as it possible. 我希望它尽可能干净和短。

I've already implement it but it is very bad but works. 我已经实现了它,但是它很糟糕,但是可以工作。

for example X = 2972117368 , I want a = 2, b = 7, c = 6 . 例如X = 2972117368 ,我想要a = 2, b = 7, c = 6 how? 怎么样?

2972117368/(1024*1024*1024) = 2.76799999922514 2972117368 /(1024 * 1024 * 1024)= 2.76799999922514

X will be always lesser than 9.99 gigabyte. X将始终小于9.99 GB。

Is seems like you're most of the way there: 似乎您已完成大部分工作:

decimal x = 2972117368;
double gig = Convert.ToDouble(x) / 1073741824.0;

byte a = (byte)Math.Floor(gig); // works for up to 127 gig - actually up to 256
byte b = (byte)(Math.Floor(gig * 10) % 10);
byte c = (byte)(Math.Floor(gig * 100) % 10);

Edited: For some typos & logical errors 编辑:对于某些错别字和逻辑错误

Encoding.ASCII.GetBytes((double.Parse((X / (1024.0 * 1024 * 1024)).ToString("0.00")) * 100).ToString())

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM